Python 为什么不';是否不创建空迁移文件?

Python 为什么不';是否不创建空迁移文件?,python,flask-sqlalchemy,flask-migrate,Python,Flask Sqlalchemy,Flask Migrate,我正在使用Flask、Flask SqlAlchemy和Flask迁移来管理我的模型。我刚刚意识到,在我最新的数据库状态下,当我创建一个新的迁移文件时,python manage.py db migrate-m'test migration,它不会创建一个空的迁移文件。相反,它尝试创建并删除几个唯一的键和外键约束 你知道它为什么会这样吗?如果你在当前迁移中没有对你的模型做任何更改,但是你得到了一个非空的迁移文件,那么它表明由于某种原因你的模型与数据库不同步,而这个新迁移的内容就是不匹配的 如果您

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


你知道它为什么会这样吗?

如果你在当前迁移中没有对你的模型做任何更改,但是你得到了一个非空的迁移文件,那么它表明由于某种原因你的模型与数据库不同步,而这个新迁移的内容就是不匹配的


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

Hi@miguel,感谢您的回复!嗯,目前我不太清楚为什么我的迁移会创建一个非空迁移。SqlAlchemy版本仍然相同(SqlAlchemy 2.1)。并且没有模型更改(与上述约束直接相关)。我接受这个非空的迁移文件,我看到后续的迁移是空的。我将检查此解决方案在我的情况下是否可以接受您的解决方案可能会起作用,但请确保测试生成一个全新的数据库并在整个迁移列表中运行它,确保此非空迁移不会因从头开始创建的数据库而失败。只想让您知道,我创建了该预先存在的迁移,并在此之后成功创建下一个迁移。虽然我不确定最初是什么造成了这个错误。尽管如此,该数据库是使用PostgreSQL进行备份和后续恢复的。我只是想改变一些索引名。。。