rust 如何使用rocket_db_pools库调试“missing field `url`”错误

8yparm6h  于 2023-04-06  发布在  其他
关注(0)|答案(1)|浏览(224)

我有一个Postgres数据库运行在以下URL

postgresql://postgres:postgres@localhost:5432/my_db

我可以使用pgAdmin和psql连接到它

psql postgresql://postgres:postgres@localhost:5432/my_db

我有以下Cargo.toml文件

[dependencies]
rocket = { version = "0.5.0-rc.3", features = ["json"] }

[dependencies.rocket_db_pools]
version = "=0.1.0-rc.3"
features = ["sqlx_postgres"]

[default.databases.my_db_name]
url = "postgresql://postgres:postgres@localhost:5432/my_db"

这个最小的火箭服务器

#[macro_use]
extern crate rocket;

use rocket::serde::json::Json;
use rocket_db_pools::{sqlx, Connection, Database};

#[derive(Database)]
#[database("my_db_name")]
struct MyDB(sqlx::PgPool);

#[get("/test")]
async fn test(
    mut _db: Connection<MyDB>,
) -> Result<Json<()>, Json<()>> {
    Ok(Json(()))
}

#[launch]
fn rocket() -> _ {
    rocket::build()
        .mount("/", routes![test]) 
        .attach(MyDB::init())  
}

这个示例看起来像是遵循文档,但是运行它时,我得到了以下内容

Error: failed to initialize database: bad configuration: missing field `url`
Error: Rocket failed to launch due to failing fairings:
   >> 'my_db' Database Pool
thread 'main' panicked at 'aborting due to fairing failure(s)', 
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

我怎么知道为什么rocket_db_pools找不到URL字段?

r7xajy2e

r7xajy2e1#

你必须在一个名为Rocket.toml的文件中提供火箭的配置,而不是像docs状态那样在Cargo.toml中:
默认情况下,可以在Rocket.toml中提供配置

相关问题