Skip to content

Incompatible rust (1.72.0) and sqlx (0.7.4) versions #259

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
juanmaia opened this issue Apr 24, 2024 · 3 comments
Closed

Incompatible rust (1.72.0) and sqlx (0.7.4) versions #259

juanmaia opened this issue Apr 24, 2024 · 3 comments

Comments

@juanmaia
Copy link

When going through the Dockerfile in the chapter 5, I got the following error when running docker build --tag zero2prod --file Dockerfile .

error[E0658]: `async fn` return type cannot contain a projection or `Self` that references lifetimes from a parent scope
   --> /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/sqlx-core-0.7.4/src/raw_sql.rs:143:10
    |
143 |     ) -> crate::Result<<E::Database as Database>::QueryResult>
    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: see issue #103532 <https://github.com/rust-lang/rust/issues/103532> for more information

error[E0658]: `async fn` return type cannot contain a projection or `Self` that references lifetimes from a parent scope
   --> /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/sqlx-core-0.7.4/src/raw_sql.rs:212:10
    |
212 |     ) -> crate::Result<Vec<<E::Database as Database>::Row>>
    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: see issue #103532 <https://github.com/rust-lang/rust/issues/103532> for more information

error[E0658]: `async fn` return type cannot contain a projection or `Self` that references lifetimes from a parent scope
   --> /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/sqlx-core-0.7.4/src/raw_sql.rs:236:10
    |
236 |     ) -> crate::Result<<E::Database as Database>::Row>
    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: see issue #103532 <https://github.com/rust-lang/rust/issues/103532> for more information

error[E0658]: `async fn` return type cannot contain a projection or `Self` that references lifetimes from a parent scope
   --> /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/sqlx-core-0.7.4/src/raw_sql.rs:260:10
    |
260 |     ) -> crate::Result<<E::Database as Database>::Row>
    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: see issue #103532 <https://github.com/rust-lang/rust/issues/103532> for more information

For more information about this error, try `rustc --explain E0658`.
error: could not compile `sqlx-core` (lib) due to 4 previous errors
warning: build failed, waiting for other jobs to finish...
thread 'main' panicked at 'Exited with status code: 101', /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/cargo-chef-0.1.62/src/recipe.rs:204:27
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

This error was not happening when running cargo build --release locally, so I assumed was something related to the rust version 1.72.0 as opposed to the 1.77.2 that I'm running locally. I guess that by the time the book was written sqlx was not yet on version 0.7.4, but probably on a smaller patch version. I'm new to Rust so I can't tell where the breaking change was added, but probably on sqlx, which is relying in a feature that is not yet available on Rust 1.72.0 but it is on 1.77.2, I haven't looked into the error, since upgrading the Dockerfile base image to 1.77.2 solves the problem.

Might be a good idea to lock all minor and patch versions to have a deterministic build.

@hejops
Copy link

hejops commented Apr 28, 2024

I can confirm that 1.77.2 gets the build working with sqlx 0.7.4, however 1.77.2-slim (as introduced a few pages later in the book) fails to build for reasons related to openssl.

This topic is actually addressed shortly afterwards in the "bare operating system" section, but to get the rust-slim build working at this stage, just install the missing dependencies explicitly:

-FROM rust:1.72.0-slim AS builder
+FROM rust:1.77.2-slim AS builder

-RUN apt update && apt install lld clang -y
+RUN apt update && apt install pkg-config libssl-dev lld clang -y

@jashka34
Copy link

jashka34 commented Jun 11, 2024

I have the same error in the process of working with Chapter 5. Fixing the sqlx version to 0.7.1 in Cargo.toml solved the problem.: sqlx = { version = "=0.7.1", default-features = false, features = ["runtime-tokio-rustls", "macros", "postgres", "uuid", "chrono", "migrate"] }

@LukeMathWalker
Copy link
Owner

This has been fixed in the next book release by updating everything to latest. Closing!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants