django.db.utils.OperationalError:不能ALTER TABLE“forum_thread”,因为它有待处理的触发事件

models.py

class Thread(models.Model):

    title = models.CharField(max_length=300)
    answer_count = models.PositiveIntegerField(default=0)
    added_at = models.DateTimeField(auto_now_add=True)
    accepted_answer = models.ForeignKey('forum.Post', null=True, blank=True, related_name='+')

我试图将accepted_answer ForeignKey更改为BooleanField

例如:

accepted_answer = models.BooleanField()

并获得迁移错误“待处理的触发事件错误”.请看一下.

最佳答案 尝试在一个操作中更新和更改同一个表的架构时,似乎会发生此错误.

例如,在从字段中删除null = True时,当makemigrations提示时提供新的默认值后,似乎出现此错误,因为Django正在尝试更改可空性,同时还更新列.

解决方法,取决于具体情况:

>最简单的通常是添加具有所需属性的新字段,然后删除旧字段(可能在复制数据之后).
>如果可以通过为需要新默认值的所有字段(Django在迁移期间询问)设置值来避免错误,请尝试在进行迁移/架构更改之前设置这些值.

在您的具体情况下,添加一个新字段然后删除旧字段可能是要走的路.

点赞