微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – Django-DB-Migrations:不能ALTER TABLE,因为它有待处理的触发事件

我想从TextField中删除null = True:

-    footer=models.TextField(null=True, blank=True)
+    footer=models.TextField(blank=True, default='')

我创建了一个模式迁移:

manage.py schemamigration fooapp --auto

由于某些页脚列包含NULL,因此如果运行迁移,则会出现此错误

django.db.utils.IntegrityError: column “footer” contains null values

我将此添加到架构迁移中:

    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

怎么了?

解决方法:

一个原因可能是因为当它实际上已经具有NULL值时,您尝试将列设置为NOT NULL.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐