Opened 8 years ago
Closed 8 years ago
#26777 closed Bug (invalid)
Cannot add foreign key constraint when migrating manytomany field
Reported by: | Ville Säävuori | Owned by: | nobody |
---|---|---|---|
Component: | Migrations | Version: | 1.9 |
Severity: | Normal | Keywords: | |
Cc: | Simon Charette | Triage Stage: | Unreviewed |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
I have a model that looks like
class LiveEvent(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) ... attendees = models.ManyToManyField( User, blank=True, related_name="events_attended" ) ... notify_subscriptions = models.ManyToManyField( User, blank=True, related_name="events_subscribed" )
when trying to add and migrate notify_subscriptions field I get the following error:
django.db.utils.IntegrityError: (1215, 'Cannot add foreign key constraint')`
When adding
'OPTIONS': { "init_command": "SET foreign_key_checks = 0;", },
to database settings , the error became:
django.db.utils.OperationalError: (1825, "Failed to add the foreign key constraint on table 'levan_liveevent_notify_subscriptions'. Incorrect options in FOREIGN KEY constraint 'slipmat/levan_liveevent_noti_liveevent_id_a4871abc_fk_levan_liveevent_id'")
the migration file looks like:
operations = [ migrations.AddField( model_name='liveevent', name='notify_subscriptions', field=models.ManyToManyField( blank=True, related_name='events_subscribed', to=settings.AUTH_USER_MODEL ), ), ]
I'm using MySQL version 5.6.27 and Django version 1.9.7
Change History (5)
comment:1 by , 8 years ago
Description: | modified (diff) |
---|---|
Resolution: | → needsinfo |
Status: | new → closed |
Type: | Uncategorized → Bug |
comment:2 by , 8 years ago
Resolution: | needsinfo |
---|---|
Status: | closed → new |
- Yes, both tables are using InnoDB engine.
- No, I'm not using a custom user model
comment:3 by , 8 years ago
FWIW, adding db_constraint=False
to the notify_subscriptions
field produces a migration that runs flawlessly. That's my workaround for now.
comment:5 by , 8 years ago
Cc: | added |
---|---|
Resolution: | → invalid |
Status: | new → closed |
Please inspect your database and provide us with the datatype of both LiveEvent
's table id
column and the intermediary table's (notify_subscriptions
) column referencing the former.
I just tried reproducing against Django 1.9.7 with no success.
Please re-open the ticket by answering these two questions: