我有一个 Flask 应用程序,它使用 Flask-SQLAlchemy 和 Flask-Migrate 进行数据库管理。我目前有大约 60 次迁移。
最近我重构了我的应用程序的一部分,删除了过程中的大量代码。一些非常旧的迁移使用了该代码,现在当我尝试运行
flask db ...
命令时,我收到错误,因为受影响的迁移无法导入该代码。这些迁移是针对我的应用程序的一个版本,我永远不想回去,所以看来我应该删除它们。我在文档中没有看到任何有关修剪或维护迁移历史记录的参考。
删除旧的迁移会对未来造成任何影响吗?重申一下,我不希望再回到这些迁移。
我假设我可以选择一个点作为新的“历史的开始”并将其
down_revision
设置为None
。在这种情况下,我应该出于任何原因保留旧迁移,还是完全删除这些文件?
我想另一种选择是注释掉那些旧迁移中失败的导入(及其用途);因为我从来没有打算降级到它们,所以它们是否有效并不重要。但这似乎会造成混乱。
谢谢!
我看到人们经常犯的一个错误是在迁移中包含应用程序中的代码。这是一个非常糟糕的主意,因为当应用程序发生更改时,迁移就会开始失败。您应该将迁移编写为独立的脚本。如果您需要应用程序中的某些内容,您应该在迁移脚本中复制它,而不是导入它。
现在回答你的问题。即使您 100% 确定您永远不需要降级到迁移历史记录中那么远,您也应该考虑是否需要从迁移中重新生成数据库,因为在这种情况下,您将需要将那些旧迁移保留在数据库中。工作秩序。
在我看来,最好的选择是降级到您认为需要的程度,并在那时生成一个新的初始迁移,其中包含所有内容。这个新的初始迁移将取代所有旧的,然后可以安全地删除。