Error creating new content types. Please make sure contenttypes is migrated before trying to migrate apps individually
Solution 1
I think this has something to do with "The removal of ContentType.name
", according to this. But somehow it doesnt work.
By manually removing the column name
from 'django_content_type' table. Eg.
'ALTER TABLE django_content_type DROP COLUMN name'
I was able to apply the migrations. Maybe this can get you a little bit further at least.
Solution 2
Try to migrate auth application first, and then others:
manage.py migrate auth
manage.py migrate <app_name>
Solution 3
In my case, what i did to fix this was updating to a newer version of django. If you work with mac just do:
- pip install django --upgrade
- python manage.py makemigrations
- python manage.py migrate
Solution 4
May look strange but I fixed this by upgrading to Django version 1.8. Initially i was using ver 1.7
Solution 5
I had to merge two systems in Django 1.9.1 and I just could not get past this error:
"Error creating new content types. Please make sure contenttypes "
Extensive googling and stackoverflowing was fruitless. Finally, I added the the debug line to
~/.virtualenvs/(venv_name)/lib/python2.7/site-packages/django/contrib/contenttypes/models.py
except (OperationalError, ProgrammingError, IntegrityError):
# It's possible to migrate a single app before contenttypes,
# as it's not a required initial dependency (it's contrib!)
# Have a nice error for this.
print "\n\nError for Content type model "+opts.model_name+"\n\n"
raise RuntimeError(
"Error creating new content types. Please make sure contenttypes "
"is migrated before trying to migrate apps individually."
)
This told me the model names that were causing the error and ultimately led to the fix.
I am using Postgres and the sequence numbers for tables django_content_type and auth_permission were not pointing to the end of the table, causing inserts to fail.
These 2 lines fixed that (based on this SO post)
SELECT pg_catalog.setval(pg_get_serial_sequence('django_content_type', 'id'), (SELECT MAX(id) FROM django_content_type)+1);
SELECT pg_catalog.setval(pg_get_serial_sequence('auth_permission', 'id'), (SELECT MAX(id) FROM auth_permission)+1);
Shubham
Updated on February 28, 2020Comments
-
Shubham over 4 years
I am trying to migrate from
Django 1.6
toDjango 1.8
. I was usingSouth
for managingmigrations
in Django 1.6. I have successfully created new migration files bypython manage.py makemigrations
. while runningpython manage.py migrate --fake-initial
, I am getting this errorTraceback (most recent call last): File "manage.py", line 39, in <module> execute_from_command_line(sys.argv) File "/home/jonty/.virtualenvs/squadrun/local/lib/python2.7/site- packages/django/core/management/__init__.py", line 338, in execute_from_command_line utility.execute() File "/home/jonty/.virtualenvs/squadrun/local/lib/python2.7/site- packages/django/core/management/__init__.py", line 330, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/jonty/.virtualenvs/squadrun/local/lib/python2.7/site-packages/django/core/management/base.py", line 390, in run_from_argv self.execute(*args, **cmd_options) File "/home/jonty/.virtualenvs/squadrun/local/lib/python2.7/site-packages/django/core/management/base.py", line 441, in execute output = self.handle(*args, **options) File "/home/jonty/.virtualenvs/squadrun/local/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 225, in handle emit_post_migrate_signal(created_models, self.verbosity, self.interactive, connection.alias) File "/home/jonty/.virtualenvs/squadrun/local/lib/python2.7/site-packages/django/core/management/sql.py", line 280, in emit_post_migrate_signal using=db) File "/home/jonty/.virtualenvs/squadrun/local/lib/python2.7/site-packages/django/dispatch/dispatcher.py", line 201, in send response = receiver(signal=self, sender=sender, **named) File "/home/jonty/.virtualenvs/squadrun/local/lib/python2.7/site-packages/django/contrib/auth/management/__init__.py", line 82, in create_permissions ctype = ContentType.objects.db_manager(using).get_for_model(klass) File "/home/jonty/.virtualenvs/squadrun/local/lib/python2.7/site-packages/django/contrib/contenttypes/models.py", line 78, in get_for_model "Error creating new content types. Please make sure contenttypes "
One of the migration file
0001_initial.py
says:dependencies = [ ('auth', '0006_require_contenttypes_0002'), ('clients', '0002_auto_20150428_1551'), ('players', '0001_initial'), ]
which I guess is particularly the problem. What could be the workaround this problem. Any help will be appreciated.
-
Shubham about 9 yearsI was able to make this work by completly deleting the table
django_content_type
and running the migration. Yeah and it's because thename
has been removed inDjango 1.8
. -
PhoebeB almost 9 yearsAnother option, create a temporary database, do a syncdb etc., then copy the django_content_type table into the problem database.
-
int_ua almost 9 yearsThere is
django/contrib/contenttypes/migrations/0002_remove_content_type_name.py
in Django 1.8. Didn't check when it was added. -
Manas Chaturvedi almost 9 yearsUpgrading to a newer version did solve my problem. Thanks!
-
Jeel Shah about 8 years@Shubham Interestingly, I dropped the table as well and yet the error persists.
:/
-
Mojtaba Yousefi almost 8 years@Stryker I'm so glad to hear that :)