我一直在错误地使用Flask-Migrate。在两个环境之间,我独立创建了迁移文件夹,并将迁移文件夹添加到.gitignore文件中。
这最近导致了问题,因为我想直接与Alembic迁移进行交互,并在github中跟踪这些更改。
这意味着我已经分叉了我的生产瓶应用程序,现在跟踪迁移文件夹,删除我的.gitignore文件中的条目。我把这个分支拉到我的本地并销毁我的本地数据库。我进行了跟踪迁移,似乎有效。
我想知道两种环境之间的问题,烧瓶如何跟踪当前版本ID的跟踪情况?假设我在本地创建并运行两次迁移,并推送迁移文件夹。当我在生产中运行db upgrade时,Flask如何迁移跟踪这两个修订,并在Production上运行这些修订?
答案 0 :(得分:1)
Alembic(Flask-Migrate背后的引擎)将在您的数据库中插入一个名为alembic_version
的小表。它在此表中写入数据库的当前版本。以下是我的一个数据库中该表的转储:
mydb=# select * from alembic_version;
version_num
--------------
36e0d1f0d589
(1 row)
当您运行升级时,它将通过从此表中读取当前修订版来了解从哪里开始升级。
好问题!