Opened 10 years ago

Closed 10 years ago

#23519 closed Bug (invalid)

Invalid ContentType after running "migrate" command

Reported by: Manuel Kaufmann Owned by: nobody
Component: Migrations Version: 1.7
Severity: Normal Keywords:
Cc: Manuel Kaufmann Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Hi folks!

First of all, I'm not sure if this is a Django bug o something in my code (or 3rd app code). I tried debugging it by myself but I didn't get to the right port. So, I'm asking here.

For some reason, after running "migrate" in a fresh db everything works fine but the second time it's ran (immediately after the first one has finished and the subsequents) I got this message:

$ ./manage.py migrate
Operations to perform:
  Synchronize unmigrated apps: facebook_comments, stronghold, dbtemplates, django_comments, django_proofread, allauth, guardian, autocomplete_light, debug_toolbar, dbsettings, chap, django_extensions, impersonate, django_wysiwyg, disqus, notifier, crispy_forms
  Apply all migrations: core, account, reversion, league, admin, challenge, sessions, sites, auth, sponsor, notifications, contenttypes, flatpages, team, organization, easy_thumbnails, inspiration
Synchronizing apps without migrations:
  Creating tables...
  Installing custom SQL...
  Installing indexes...
Running migrations:
  No migrations to apply.
The following content types are stale and need to be deleted:

    core | 

Any objects related to these content types by a foreign key will also
be deleted. Are you sure you want to delete these content types?
If you're unsure, answer 'no'.

    Type 'yes' to continue, or 'no' to cancel: yes
$

These are the differences in the db dump files (after first "migrate" command compared with the second run): http://linkode.org/9OjIVmwW3YDDM4pTabHWX1

--- chap-migration-test.sql	2014-09-18 09:31:58.332672674 -0300
+++ chap-migration-test-after-2nd-migrate.sql	2014-09-18 09:32:17.148672191 -0300
@@ -2756,7 +2756,6 @@
 49	Can add registration invitation	16	add_registrationinvitation
 50	Can change registration invitation	16	change_registrationinvitation
 51	Can delete registration invitation	16	delete_registrationinvitation
-52	Can edit core non-model settings	17	can_edit__settings
 53	Can add user	18	add_user
 54	Can change user	18	change_user
 55	Can delete user	18	delete_user
@@ -2909,6 +2908,7 @@
 202	Can add group object permission	67	add_groupobjectpermission
 203	Can change group object permission	67	change_groupobjectpermission
 204	Can delete group object permission	67	delete_groupobjectpermission
+205	Can edit core non-model settings	68	can_edit__settings
 \.
 
 
@@ -2916,7 +2916,7 @@
 -- Name: auth_permission_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
 --
 
-SELECT pg_catalog.setval('auth_permission_id_seq', 204, true);
+SELECT pg_catalog.setval('auth_permission_id_seq', 205, true);
 
 
 --
@@ -3279,7 +3279,6 @@
 14	report	core	report
 15	rule	core	rule
 16	registration invitation	core	registrationinvitation
-17	core	core	
 18	user	challenge	user
 19	goal	challenge	goal
 20	user goal	challenge	usergoal
@@ -3330,6 +3329,7 @@
 65	notification	notifier	notification
 66	user object permission	guardian	userobjectpermission
 67	group object permission	guardian	groupobjectpermission
+68	core	core	
 \.
 
 
@@ -3337,7 +3337,7 @@
 -- Name: django_content_type_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
 --
 
-SELECT pg_catalog.setval('django_content_type_id_seq', 67, true);
+SELECT pg_catalog.setval('django_content_type_id_seq', 68, true);
 
 
 --

and another diff between the second and the third time: http://linkode.org/rX21iFzHICntF4ergjEcW5

--- chap-migration-test-after-2nd-migrate.sql	2014-09-18 09:32:17.148672191 -0300
+++ chap-migration-test-after-3rd-migrate.sql	2014-09-18 09:37:38.948663938 -0300
@@ -2908,7 +2908,7 @@
 202	Can add group object permission	67	add_groupobjectpermission
 203	Can change group object permission	67	change_groupobjectpermission
 204	Can delete group object permission	67	delete_groupobjectpermission
-205	Can edit core non-model settings	68	can_edit__settings
+206	Can edit core non-model settings	69	can_edit__settings
 \.
 
 
@@ -2916,7 +2916,7 @@
 -- Name: auth_permission_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
 --
 
-SELECT pg_catalog.setval('auth_permission_id_seq', 205, true);
+SELECT pg_catalog.setval('auth_permission_id_seq', 206, true);
 
 
 --
@@ -3329,7 +3329,7 @@
 65	notification	notifier	notification
 66	user object permission	guardian	userobjectpermission
 67	group object permission	guardian	groupobjectpermission
-68	core	core	
+69	core	core	
 \.
 
 
@@ -3337,7 +3337,7 @@
 -- Name: django_content_type_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
 --
 
-SELECT pg_catalog.setval('django_content_type_id_seq', 68, true);
+SELECT pg_catalog.setval('django_content_type_id_seq', 69, true);
 
 
 --

I found that ContentType is marked to be removed for some reason here: https://github.com/django/django/blob/stable/1.7.x/django/contrib/contenttypes/management.py#L41 . Although, I couldn't find the real reason. In fact, I couldn't find why the model attribute for that ContentType is ''.

Another thing that I noticed is that I remove one of the 3rd apps I'm using (django-dbsettings==0.7) from INSTALLED_APPS and run "migrate" again, I get that message but after answering yes Django doesn't ask me again about that.

I tried creating a new project from scratch and installing django-dbsettings, create some models, run "makemigrations", "migrate", delete some models, "makemigrations", "migrate" and so... but I didn't get that error in this new project.

I'm confused and I couldn't get with the solution. I'm not sure if this is something related with django itself or if it's just my code.

Change History (3)

comment:1 by Manuel Kaufmann, 10 years ago

A new ContentType object is created when I run "migrate" command. I connected the signal post_save and checked the sender and it's a ContentType with instance.model equal to ''.

How can I detect where is this ContentType created?

comment:2 by Manuel Kaufmann, 10 years ago

Well, with the help of cramm (from Python Argentina) I found there is something weird at django-dbsettings here:

Not sure how to solve it yet, but at least, I can say it doesn't seem to be a Django Bug :)

Thanks and sorry!

comment:3 by Tim Graham, 10 years ago

Resolution: invalid
Status: newclosed
Note: See TracTickets for help on using tickets.
Back to Top