我一直在使用flask db migrate,但是在数据库中已经手动更改了一些列,因此我不需要那些特定的迁移文件。不幸的是,每次我运行flask db migrate命令时,它仍然为我被迫手动删除的那些列创建降级和升级命令。我该如何解决这个问题,我的数据库当前处于正确的状态,我该如何强制执行,以便 Flask db migrate 重置其对当前状态的理解
编辑1我正在使用sqlite,问题始于alter table,其中sqlite无法使用它,我尝试的当前解决方案是这个Migrate(app,db,compare_type = True,render_as_batch = True)
edit 2 约束也成为 sqlite 的一个问题。它没有给约束命名,所以我必须自己手动完成
使用约定字典解决了这个问题
convention = {
"ix": "ix_%(column_0_label)s",
"uq": "uq_%(table_name)s_%(column_0_name)s",
"ck": "ck_%(table_name)s_%(constraint_name)s",
"fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s",
"pk": "pk_%(table_name)s"
}
db = SQLAlchemy(metadata=MetaData(naming_convention=convention))
和
migrate = Migrate(app, db, compare_type=True, render_as_batch=True)