postgresql 错误源于宏“$crate::sqlx_macros::expand_query”,该宏来自宏“sqlx::query_as”的展开

ffscu2ro  于 2023-02-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(353)

我想向数据库发送查询,但遇到此错误:
此错误源于宏$crate::sqlx_macros::expand_query,该宏来自宏sqlx::query_as的扩展(在夜间构建中,使用-Z宏回溯运行以获取更多信息)
必须将DATABASE_URL设置为使用查询宏
我使用的是Rocket框架和PostgreSQL。

    • 代码:**
#[get("/user/<uuid>", rank = 1, format = "text/plain")]
async fn user(pool: &rocket::State<PgPool>, uuid: &str) -> Result<User, Status> {
    let parsed_uuid = Uuid::parse_str(uuid).map_err(|_| Status::BadRequest)?;
    
    let user = sqlx::query_as!(User, "SELECT * FROM users WHERE uuid = $1", parsed_uuid)
        .fetch_one(pool.inner())
        .await;
    user.map_err(|_| Status::NotFound)
}

#[launch]
async fn rocket() -> Rocket<Build> {
    let our_rocket = rocket::build();
    
    let config: Config = our_rocket
        .figment()
        .extract()
        .expect("Incorrect Rocket.toml configuration");

    let pool = PgPoolOptions::new()
        .max_connections(5)
        .connect(&config.database_url)
        .await
        .expect("Failed to connect to database");
    
    our_rocket.manage(pool)
}
[dependencies]
rocket = { version = "0.5.0-rc.2", features = ["secrets"] }
sqlx = {version = "0.6.2", features = ["postgres","uuid", "runtime-tokio-rustls"]}

我怎样才能解决那个问题呢?

0ve6wy6x

0ve6wy6x1#

sqlx使用数据库来检查您的查询类型是否正确,要使用它的宏,您必须定义环境变量DATABASE_URL,使用.env文件或提供sqlx-data.json,您可以将DATABASE_URL设置为具有所需架构的数据库,您可以使用适当的环境设置运行cargo:DATABASE_URL="postgres://your_database_info" cargo (run|build|check|…)

相关问题