【问题标题】:MySQL DB migration: change of string lengthMySQL 数据库迁移:字符串长度的变化
【发布时间】:2015-09-12 06:44:57
【问题描述】:

我正在使用 SQLAlchemy + alembic 来管理我的数据库。我有一个 10 个字符长的字符串字段,后来发现它必须是 20 个。所以我更新了模型定义。

class Foo(db.Model):
    __tablename__ = 'foos'
    id = db.Column(db.Integer, primary_key=True)
    foo_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    name = db.Column(db.String(80))

当我运行alembic revision --autogenerate 时,没有检测到这一点。现在我确实阅读了文档并怀疑这可能不受支持。如何优雅地管理 DB 中的此类更改?

【问题讨论】:

    标签: python mysql alembic


    【解决方案1】:

    您需要启用可选列类型checking。 请参阅this 了解默认检查内容的说明

    context.configure(
        # ...
        compare_type = True
    )
    

    【讨论】:

    • 我和提问者有同样的问题,但这个改变并没有真正解决我的问题。我投了赞成票,因为这仍然有用,但我认为添加 compare_type = True 并不能识别长度已更改的字符串列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 2012-11-23
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 2018-09-28
    • 2021-04-16
    相关资源
    最近更新 更多