解决微服务间使用 alembic 出现版本冲突导致数据冲突问题

It has been 0 days since the last update of this post. Some contents may be outdated. Please pay attention to screening.
不同服务间数据库迁移
在不同服务中,需要依赖不同的 models
来迁移数据库,
此时出现会出现较为常见的异常
1 | FAILED: Can't locate revision identified by 'cabd23751e2b' |
导致这个警告的原因是,数据库中存的版本号不在迁移脚本文件中
解决办法
1. 生成一个新的迁移脚本
1 | alembic revision -m "Base migration" |
这会生成一个迁移文件,比如:
1 | alembic/versions/<new_revision_id>_base_migration.py |
2. 手动设置 revision 和 down_revision 打开该迁移文件,
将 revision 修改为 cabd23751e2b,并设置 down_revision 为 None,因为它是初始版本
1 | """Base migration |
3. 同步数据库版本, 使用 stamp 命令将数据库版本与迁移脚本同步
1 | alembic stamp cabd23751e2b |
4. 生成后续迁移脚本 运行 alembic revision –autogenerate 生成其他需要的迁移脚本。
1 | alembic revision --autogenerate -m "init_db" |
5. 再执行 alembic upgrade head
将刚生成的迁移文件映射到数据库
… |
---|
本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明 |