[英]flask db migrate do not change column setting
我正在使用带有烧瓶迁移的 sql-alchemy。 我用这样的东西设置了我的数据库 class:
class Candidate(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(32), index=False, unique=False)
interviewer = db.Column(db.String(32), index=False, unique=False)
不幸的是,有些值太长了,所以我得到了错误:
sqlalchemy.exc.DataError:(psycopg2.errors.StringDataRightTruncation)值对于类型字符变化(32)而言太长
不确定是哪一列的问题(实际的 class 要复杂得多)我像这样更改了 class:
class Candidate(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), index=False, unique=False)
interviewer = db.Column(db.String(64), index=False, unique=False)
然后跑:
flask db migrate
flask db upgrade
应用更改。 不幸的是,我仍然收到同样的错误。 我究竟做错了什么?
Alembic(Flask-Migrate 背后的迁移引擎)默认情况下不会将数据类型更改放入迁移中,因此您从 32 到 64 的更改可能会被忽略。 您可以通过查看生成的迁移脚本来确认。
要配置 Alembic 以监视列类型更改,您必须在创建Migrate
class 时添加compare_type=True
选项:
migrate = Migrate(app, db, compare_type=True)
完成此操作后,重新生成迁移,它应该具有使列更大的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.