【发布时间】:2012-10-02 00:46:14
【问题描述】:
我想从 TextField 中删除 null=True:
- footer=models.TextField(null=True, blank=True)
+ footer=models.TextField(blank=True, default='')
我创建了一个架构迁移:
manage.py schemamigration fooapp --auto
由于一些页脚列包含NULL,如果我运行迁移,我会得到这个error:
django.db.utils.IntegrityError:列“footer”包含空值
我将此添加到架构迁移中:
for sender in orm['fooapp.EmailSender'].objects.filter(footer=None):
sender.footer=''
sender.save()
现在我明白了:
django.db.utils.DatabaseError: cannot ALTER TABLE "fooapp_emailsender" because it has pending trigger events
怎么了?
【问题讨论】:
-
这个问题很相似:stackoverflow.com/questions/28429933/… 并且有对我更有用的答案。
-
我在 Postgres v10 上遇到了同样的问题(但在 Postgres v.12 上没有)。通过添加单独的迁移文件解决了问题。
标签: python django postgresql django-migrations