【发布时间】:2019-10-16 04:42:38
【问题描述】:
我正在尝试将新的nullable=False 列添加到现有表中。但它不会创建列,因为存在现有行且字段为Null。
这是经典的 catch 22 :D。
这是我添加的模型列:
user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
这是我得到的错误
sqlalchemy.exc.IntegrityError: (psycopg2.errors.NotNullViolation) column "user_id" contains null values
我尝试将, default=0 添加到模型中属性的末尾,希望迁移只会将所有现有行的列值设置为0,但这没有任何效果。
我没有看到任何关于这种看似普遍现象的文档,所以我想我会问专家。我错过了什么?
【问题讨论】:
-
我会修改迁移文件..以可为空的形式添加列,如果为空,则使用 user_id 进行更新,然后将可为空的设置为 false。
标签: python flask flask-sqlalchemy flask-migrate