删除旧的 Flask-Migrate 迁移可以吗?

问题描述 投票:0回答:1

我有一个 Flask 应用程序,它使用 Flask-SQLAlchemy 和 Flask-Migrate 进行数据库管理。我目前有大约 60 次迁移。

最近我重构了我的应用程序的一部分,删除了过程中的大量代码。一些非常旧的迁移使用了该代码,现在当我尝试运行

flask db ...
命令时,我收到错误,因为受影响的迁移无法导入该代码。这些迁移是针对我的应用程序的一个版本,我永远不想回去,所以看来我应该删除它们。我在文档中没有看到任何有关修剪或维护迁移历史记录的参考。

删除旧的迁移会对未来造成任何影响吗?重申一下,我不希望再回到这些迁移。

我假设我可以选择一个点作为新的“历史的开始”并将其

down_revision
设置为
None
。在这种情况下,我应该出于任何原因保留旧迁移,还是完全删除这些文件?

我想另一种选择是注释掉那些旧迁移中失败的导入(及其用途);因为我从来没有打算降级到它们,所以它们是否有效并不重要。但这似乎会造成混乱。

谢谢!

flask flask-sqlalchemy database-migration alembic flask-migrate
1个回答
0
投票

我看到人们经常犯的一个错误是在迁移中包含应用程序中的代码。这是一个非常糟糕的主意,因为当应用程序发生更改时,迁移就会开始失败。您应该将迁移编写为独立的脚本。如果您需要应用程序中的某些内容,您应该在迁移脚本中复制它,而不是导入它。

现在回答你的问题。即使您 100% 确定您永远不需要降级到迁移历史记录中那么远,您也应该考虑是否需要从迁移中重新生成数据库,因为在这种情况下,您将需要将那些旧迁移保留在数据库中。工作秩序。

在我看来,最好的选择是降级到您认为需要的程度,并在那时生成一个新的初始迁移,其中包含所有内容。这个新的初始迁移将取代所有旧的,然后可以安全地删除。

© www.soinside.com 2019 - 2024. All rights reserved.