#24311: Foreign key constraint error when syncing unmigrated models that relate 
to
migrated models
---------------------------------+--------------------------------------
     Reporter:  collinanderson   |                    Owner:  nobody
         Type:  Bug              |                   Status:  closed
    Component:  Migrations       |                  Version:  1.8alpha1
     Severity:  Release blocker  |               Resolution:  wontfix
     Keywords:                   |             Triage Stage:  Unreviewed
    Has patch:  0                |      Needs documentation:  0
  Needs tests:  0                |  Patch needs improvement:  0
Easy pickings:  0                |                    UI/UX:  0
---------------------------------+--------------------------------------
Changes (by MarkusH):

 * status:  new => closed
 * resolution:   => wontfix


Comment:

 On 1.8 this is the SQL run by the syncdb code (last query fails):

 {{{#!sql
 CREATE TABLE `app_myuser` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY
 KEY, `password` varchar(128) NOT NULL, `last_login` datetime(6) NULL,
 `is_superuser` bool NOT NULL, `username` varchar(30) NOT NULL UNIQUE,
 `first_name` varchar(30) NOT NULL, `last_name` varchar(30) NOT NULL,
 `email` varchar(254) NOT NULL, `is_staff` bool NOT NULL, `is_active` bool
 NOT NULL, `date_joined` datetime(6) NOT NULL) None
 SELECT engine FROM information_schema.tables WHERE table_name = %s
 ['app_myuser']
 CREATE TABLE `app_myuser_groups` (`id` integer AUTO_INCREMENT NOT NULL
 PRIMARY KEY, `myuser_id` integer NOT NULL, `group_id` integer NOT NULL,
 UNIQUE (`myuser_id`, `group_id`)) None
 SELECT engine FROM information_schema.tables WHERE table_name = %s
 ['app_myuser_groups']
 CREATE TABLE `app_myuser_user_permissions` (`id` integer AUTO_INCREMENT
 NOT NULL PRIMARY KEY, `myuser_id` integer NOT NULL, `permission_id`
 integer NOT NULL, UNIQUE (`myuser_id`, `permission_id`)) None
 SELECT engine FROM information_schema.tables WHERE table_name = %s
 ['app_myuser_user_permissions']
     Running deferred SQL...
 ALTER TABLE `app_myuser_groups` ADD CONSTRAINT
 `app_myuser_groups_myuser_id_2b41e8461df0328_fk_app_myuser_id` FOREIGN KEY
 (`myuser_id`) REFERENCES `app_myuser` (`id`) None
 ALTER TABLE `app_myuser_groups` ADD CONSTRAINT
 `app_myuser_groups_group_id_7a5f5bcafc6997d9_fk_auth_group_id` FOREIGN KEY
 (`group_id`) REFERENCES `au
 }}}

 On 1.7 the respective SQL is the following (no failures):

 {{{#!sql
 CREATE TABLE `app_myuser_groups` (`id` integer AUTO_INCREMENT NOT NULL
 PRIMARY KEY, `myuser_id` integer NOT NULL, `group_id` integer NOT NULL,
 UNIQUE (`myuser_id`, `group_id`)); None
 CREATE TABLE `app_myuser_user_permissions` (`id` integer AUTO_INCREMENT
 NOT NULL PRIMARY KEY, `myuser_id` integer NOT NULL, `permission_id`
 integer NOT NULL, UNIQUE (`myuser_id`, `permission_id`)); None
 CREATE TABLE `app_myuser` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY
 KEY, `password` varchar(128) NOT NULL, `last_login` datetime NOT NULL,
 `is_superuser` bool NOT NULL, `username` varchar(30) NOT NULL UNIQUE,
 `first_name` varchar(30) NOT NULL, `last_name` varchar(30) NOT NULL,
 `email` varchar(75) NOT NULL, `is_staff` bool NOT NULL, `is_active` bool
 NOT NULL, `date_joined` datetime NOT NULL); None
 ALTER TABLE `app_myuser_groups` ADD CONSTRAINT
 `myuser_id_refs_id_08272aba` FOREIGN KEY (`myuser_id`) REFERENCES
 `app_myuser` (`id`); None
 ALTER TABLE `app_myuser_user_permissions` ADD CONSTRAINT
 `myuser_id_refs_id_becb7d62` FOREIGN KEY (`myuser_id`) REFERENCES
 `app_myuser` (`id`); None
 CREATE INDEX `app_myuser_groups_f1d9e869` ON `app_myuser_groups`
 (`myuser_id`); None
 CREATE INDEX `app_myuser_groups_5f412f9a` ON `app_myuser_groups`
 (`group_id`); None
 CREATE INDEX `app_myuser_user_permissions_f1d9e869` ON
 `app_myuser_user_permissions` (`myuser_id`); None
 CREATE INDEX `app_myuser_user_permissions_83d7f98b` ON
 `app_myuser_user_permissions` (`permission_id`); None
 }}}

 However, looking at the constraints for `app_myuser_groups` this reveals a
 missing constraint to `auth_group`.

 {{{#!sql
 CREATE TABLE `app_myuser_groups` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `myuser_id` int(11) NOT NULL,
   `group_id` int(11) NOT NULL,
   PRIMARY KEY (`id`),
   UNIQUE KEY `myuser_id` (`myuser_id`,`group_id`),
   KEY `app_myuser_groups_f1d9e869` (`myuser_id`),
   KEY `app_myuser_groups_5f412f9a` (`group_id`),
   CONSTRAINT `myuser_id_refs_id_08272aba` FOREIGN KEY (`myuser_id`)
 REFERENCES `app_myuser` (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8
 }}}

 In other words, 1.7 seems to silently ignore to add constraints to missing
 tables.

 See the docs as well:
 https://docs.djangoproject.com/en/1.7/topics/migrations/#unmigrated-
 dependencies

--
Ticket URL: <https://code.djangoproject.com/ticket/24311#comment:4>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/072.7c3905bd18c1c16d6cdff9c953398a45%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to