Django-DB-Migrations: cannot ALTER TABLE because it has pending trigger events

guettli picture guettli · Oct 11, 2012 · Viewed 46.6k times · Source

I want to remove null=True from a TextField:

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

I created a schema migration:

manage.py schemamigration fooapp --auto

Since some footer columns contain NULL I get this error if I run the migration:

django.db.utils.IntegrityError: column "footer" contains null values

I added this to the schema migration:

    for sender in orm['fooapp.EmailSender'].objects.filter(footer=None):
        sender.footer=''
        sender.save()

Now I get:

django.db.utils.DatabaseError: cannot ALTER TABLE "fooapp_emailsender" because it has pending trigger events

What is wrong?

Answer

maazza picture maazza · Feb 25, 2014

Another reason for this maybe because you try to set a column to NOT NULL when it actually already has NULL values.