我想向数据库发送查询,但遇到此错误:
此错误源于宏$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"]}
我怎样才能解决那个问题呢?
1条答案
按热度按时间0ve6wy6x1#
sqlx
使用数据库来检查您的查询类型是否正确,要使用它的宏,您必须定义环境变量DATABASE_URL
,使用.env
文件或提供sqlx-data.json
,您可以将DATABASE_URL
设置为具有所需架构的数据库,您可以使用适当的环境设置运行cargo:DATABASE_URL="postgres://your_database_info" cargo (run|build|check|…)