我有一个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字段?
1条答案
按热度按时间r7xajy2e1#
你必须在一个名为
Rocket.toml
的文件中提供火箭的配置,而不是像docs状态那样在Cargo.toml
中:默认情况下,可以在
Rocket.toml
中提供配置