首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与postgres方案一起使用时,Flask-Migrate会创建相同的重复迁移

与postgres方案一起使用时,Flask-Migrate会创建相同的重复迁移
EN

Stack Overflow用户
提问于 2019-09-01 22:48:09
回答 1查看 493关注 0票数 2

我有一个非常简单和愚蠢的问题,但我不知道我错过了什么。基本上,按照我目前编写管理应用程序的方式,似乎flask migrate总是创建一个绝对迁移,而不仅仅是一个从以前的模式迁移到当前模式的更改集。

例如,如果我删除我的迁移并旋转一个全新的DB,然后我执行manage db migrate,然后执行manage db upgrade所有工作。如果我随后对db.Model表进行了更改,然后执行manage db migrate,则不会得到错误。

然而,新的迁移脚本指向前一个,但不仅仅是将数据库从以前的模式状态转换到新的模式状态所需的差异,而是从空模式开始的完全(绝对)迁移-如中所示,它将尝试从头开始再次创建表(具有更改),而不仅仅是将更改应用于已创建的模式。也就是说,即使迁移与上一次迁移相关联,它也没有考虑到上一次迁移应用了什么。这意味着它们不能链接在一起,因为例如,第二次迁移将再次尝试创建表,因此manage db upgrade在第二次调用时会失败。

我的manage应用程序如下所示:

代码语言:javascript
复制
from flask_migrate import Migrate, MigrateCommand

from src.common.db import db
from src.common.flaskery import global_flask_app, global_flask_manager

app = global_flask_app(__name__)
migrate = Migrate(app, db)
manager = global_flask_manager(__name__)
manager.add_command('db', MigrateCommand)

from src.db.models import *

def main():
    manager.run()

if __name__ == '__main__':
    main()

相似: Flask迁移使用不同的postgres模式( __table_args__ = {'schema':'test_schema'})](https://stackoverflow.com/questions/40577640/flask-migrate-using-different-postgres-schemas-table-args-schema-te)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-02 08:41:39

因此,在migrations/env.py中,您需要将include_schemas=True添加到配置中,如下所示:

代码语言:javascript
复制
context.configure(connection=connection,
                  target_metadata=target_metadata,
                  process_revision_directives=process_revision_directives,
                  include_schemas=True,
                  **current_app.extensions['migrate'].configure_args)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57746979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档