为什么Alembic运行错误的迁移脚本?

时间:2015-08-27 16:18:29

标签: alembic

当我尝试

alembic upgrade head

Alembic运行上一个迁移脚本,显然引发了错误,因为我的架构发生了变化。

在我的数据库中,我将version_num设置为48957fdfe8d5。运行后

alembic revision -m '<my message>'

Alembic创建了新的脚本文件 - 我想要运行的文件 - 在顶部

revision = '28cc06993b73'
down_revision = '4d5f9ba76c5e'

换句话说,一切看起来都不错。那么为什么在4d5f9ba76c5e而不是28cc06993b73中明确运行代码呢?我也试过

alembic upgrade 28cc06993b73

但它仍在4d5f9ba76c5e中运行代码。这是日志:

$ alembic upgrade 28cc06993b73
INFO  [alembic.migration] Context impl MySQLImpl.
INFO  [alembic.migration] Will assume non-transactional DDL.
Starting in DEBUG mode
INFO  [alembic.migration] Running upgrade 48957fdfe8d5 -> 4d5f9ba76c5e, Breaking up metadata into required and optional

另外,如果我查看了Alembic的历史记录,我看到头部在28cc06993b73上:

$ alembic history
Starting in DEBUG mode
4d5f9ba76c5e -> 28cc06993b73 (head), creating soft file table
48957fdfe8d5 -> 4d5f9ba76c5e, Breaking up metadata into required and optional
<base> -> 48957fdfe8d5, Init

提前致谢。

1 个答案:

答案 0 :(得分:0)

首先你说你的版本号在db中是48957fdfe8d5所以从48957fdfe8d5升级 - &gt;预计4d5f9ba76c5e将根据您的蒸馏历史记录。

你也说&#34; Alembic运行上一个迁移脚本,显然因为我的架构发生了变化而引发错误。&#34;它显示什么错误?您是否手动更改了数据库,以便它反映出28cc06993b73中应该发生的事情?如果是这种情况,那么你可以运行

alembic stamp head

让你的数据库与alembic迁移同步