【问题标题】:Why Flask Migrate doesn't create an empty migration file?为什么 Flask Migrate 不会创建一个空的迁移文件?
【发布时间】:2016-09-28 10:20:32
【问题描述】:

我正在使用 Flask、Flask-SqlAlchemy 和 Flask-Migrate 来管理我的模型。而且我刚刚意识到,在我最新的数据库状态下,当我创建一个新的迁移文件 python manage.py db migrate -m'test migration 时,它不会创建一个空的迁移文件。相反,它会尝试创建和删除几个唯一键和外键约束。

任何想法为什么它会这样?

【问题讨论】:

    标签: python flask-sqlalchemy flask-migrate


    【解决方案1】:

    如果您在当前迁移中没有对模型进行任何更改,但生成了一个非空的迁移文件,那么它表明您的模型由于某种原因与数据库不同步,并且这个新的内容迁移只是不匹配的东西。

    如果您说迁移包含删除一些约束并添加一些其他约束的代码,这让我认为约束名称可能已更改,或者您可能将 SQLAlchemy 版本升级到生成具有不同名称的约束的更新版本.

    【讨论】:

    • 嗨@miguel,谢谢您的回复!嗯,目前我不确定为什么我的迁移会创建一个非空迁移。 SqlAlchemy 版本仍然相同(Flask-SqlAlchemy 2.1)。并且没有模型更改(与上述约束直接相关)。我正在接受这个非空迁移文件,并且我看到后续迁移确实是空的。我会检查这个解决方案在我的情况下是否可以接受
    • 您的解决方案可能有效,但请务必测试生成一个全新的数据库并在整个迁移列表中运行它,确保此非空迁移对于从头开始构建的数据库不会失败。
    • 只是想让您知道,我创建了该预先存在的迁移,并在此之后成功创建了下一个迁移。尽管我不确定首先是什么造成了该错误。虽然,数据库是备份,后来使用 PostgreSQL 还原。只是认为该过程更改了一些索引名称...
    猜你喜欢
    • 2021-11-08
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    相关资源
    最近更新 更多