Rocket应用连接Postgres遇E0599错误:找不到fairling方法
解决Rocket连接Postgres时的
fairling关联项错误 你的问题核心是方法拼写错误+不兼容依赖冲突,以下是具体修复步骤:
1. 修正方法拼写错误
代码中MyDatabase::fairling()是拼写失误,Rocket 0.5的rocket_sync_db_pools通过#[database]宏生成的正确方法是fairing()(注意末尾是ing而非ling)。
修正后的main.rs代码:
#[macro_use] extern crate rocket; use rocket_sync_db_pools::{database, diesel}; #[database("time-board")] struct MyDatabase(diesel::PgConnection); #[launch] fn rocket() -> _ { rocket::build() .attach(MyDatabase::fairing()) // 此处修正拼写错误 }
2. 移除不兼容依赖
你引入的rocket_contrib 0.4.11是Rocket 0.4版本的扩展库,与当前使用的Rocket 0.5-rc.1完全不兼容,必须删除该依赖项。
修正后的Cargo.toml:
[package] name = "db_testing" version = "0.1.0" edition = "2021" [dependencies] rocket = { version = "0.5.0-rc.1", features = ["json"] } diesel = { version = "2.0.0", features = ["chrono", "r2d2", "uuid", "postgres"] } diesel_migrations = "2.0.0" rocket_sync_db_pools = { version = "0.1.0-rc.2", features = ["diesel_postgres_pool"] }
3. 确认运行环境
确保本地Postgres服务已启动,且Rocket.toml中配置的time-board数据库已提前创建。
完成以上操作后,重新执行cargo run即可正常编译运行。
内容的提问来源于stack exchange,提问作者Arkady Rudenko
相关产品推荐
相关产品推荐

