Rust项目用embed_migrations连PostgreSQL报错及版本适配咨询
解决Diesel embed_migrations!找不到migrations目录的错误
你的错误提示Unable to find migrations directory和版本无关,核心是migrations目录的位置不符合Diesel的默认约定,或者宏没有指定正确的路径。以下是具体解决步骤:
1. 确认migrations目录的正确位置
Diesel默认会在项目根目录(也就是Cargo.toml所在的目录)查找migrations文件夹,而不是src子目录下。需要确保项目根目录下存在这个文件夹。
如果还没有创建migrations目录,用Diesel CLI生成:
首先安装适配PostgreSQL的Diesel CLI:
cargo install diesel_cli --no-default-features --features postgres
然后在项目根目录执行初始化命令:
diesel setup
这个命令会自动创建migrations目录和对应的数据库配置文件。
2. 手动指定migrations路径(如果目录位置特殊)
如果你的migrations目录不在项目根目录,需要给embed_migrations!宏传入自定义路径参数,比如:
use diesel_migrations::embed_migrations; // 替换成你实际的migrations目录路径 embed_migrations!("./custom/path/migrations"); pub fn init() { lazy_static::initialize(&POOL); let conn = connection().expect("Failed to connect"); embedded_migrations::run(&conn).unwrap(); }
3. 版本兼容性验证(无需调整版本)
你当前使用的diesel 1.4.x和diesel_migrations 1.4.0版本是严格匹配的,不存在版本兼容问题,不需要修改版本号。
验证步骤
- 确认
migrations目录在项目根目录,且包含至少一个迁移文件(可以用diesel migration generate create_users生成测试迁移) - 重新运行程序,错误应该消失。
内容的提问来源于stack exchange,提问作者feggg ze
相关产品推荐
相关产品推荐

