2

我一直在错误地使用 Flask-Migrate。在两个环境之间,我独立创建了迁移文件夹,并将迁移文件夹添加到 .gitignore 文件中。

这最近引起了问题,因为我想直接与 Alembic 迁移进行交互,并在 github 中跟踪这些更改。

这意味着我已经分叉了我的生产烧瓶应用程序,现在跟踪迁移文件夹,从我的 .gitignore 文件中删除了它的条目。我把这个分支拉到我的本地并破坏了我的本地数据库。我运行了跟踪的迁移,它似乎工作。

我想知道在两个环境之间,flask 迁移如何跟踪当前的修订 ID 是什么?假设我在本地创建并运行两个迁移,然后推送迁移文件夹。当我在生产中运行 db upgrade 时,Flask 迁移将如何跟踪这两个修订版,并在生产上运行它们?

4

1 回答 1

2

Alembic(Flask-Migrate 背后的引擎)将在您的数据库中插入一个名为alembic_version. 它将数据库的当前版本写入此表中。这是我的一个数据库中该表的转储:

mydb=# select * from alembic_version;
 version_num
--------------
 36e0d1f0d589
(1 row)

当您运行升级时,它会通过从该表中读取当前版本来知道从哪里开始升级。

好问题!

于 2016-08-01T23:52:08.410 回答