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