Emi*_*aas 4 python sqlalchemy flask flask-migrate
我正在使用 sql-alchemy 和flask-migrate。我用这样的方式设置我的数据库类:
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)
Run Code Online (Sandbox Code Playgroud)
不幸的是,有些值太长,所以我收到了错误:
sqlalchemy.exc.DataError:(psycopg2.errors.StringDataRightTruncation)值对于类型字符变化来说太长(32)
不确定哪一列出了问题(实际的类要复杂得多)我像这样更改了类:
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)
Run Code Online (Sandbox Code Playgroud)
然后跑:
flask db migrate
flask db upgrade
Run Code Online (Sandbox Code Playgroud)
应用更改。不幸的是我仍然收到同样的错误。我究竟做错了什么?
Alembic(Flask-Migrate 背后的迁移引擎)默认情况下不会将数据类型更改放入迁移中,因此您从 32 到 64 的更改可能会被忽略。您可以通过查看生成的迁移脚本进行确认。
要配置 Alembic 以监视列类型更改,您必须compare_type=True在创建Migrate类时添加以下选项:
migrate = Migrate(app, db, compare_type=True)
Run Code Online (Sandbox Code Playgroud)
执行此操作后,重新生成迁移,它应该包含使列更大的代码。
| 归档时间: |
|
| 查看次数: |
1423 次 |
| 最近记录: |