Подтвердить что ты не робот

Ошибка при создании новых типов содержимого. Убедитесь, что contenttypes перенесен, прежде чем пытаться перенести приложения по отдельности

Я пытаюсь перейти от Django 1.6 к Django 1.8. Я использовал South для управления migrations в Django 1.6. Я успешно создал новые файлы миграции python manage.py makemigrations. при запуске python manage.py migrate --fake-initial, я получаю эту ошибку

 Traceback (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 "

Один из файлов миграции 0001_initial.py говорит:

dependencies = [
    ('auth', '0006_require_contenttypes_0002'),
    ('clients', '0002_auto_20150428_1551'),
    ('players', '0001_initial'),
]

который, я думаю, является особенно проблемой. Каким может быть обходной путь этой проблемы. Любая помощь будет оценена.

4b9b3361

Ответ 1

Я думаю, что это как-то связано с "Удаление ContentType.name", в соответствии с этим. Но почему-то это не работает.

Ручным удалением столбца name из таблицы django_content_type. Например.

'ALTER TABLE django_content_type DROP COLUMN name'

Я смог применить миграции. Возможно, это может помочь вам немного по крайней мере.

Ответ 2

Сначала попробуйте перенести приложение auth, а затем другие:

manage.py migrate auth
manage.py migrate <app_name>

Ответ 3

В моем случае, что я сделал, чтобы исправить это, было обновление до более новой версии django. Если вы работаете с mac, просто выполните:

  • pip install django --upgrade
  • python manage.py makemigrations
  • python manage.py migrate

Ответ 4

Может показаться странным, но я исправил это, обновив Django версии 1.8. Первоначально я использовал ver 1.7

Ответ 5

Добавить комментарий от @int_ua Добавьте это как зависимость от миграции, которая терпит неудачу:

dependencies = [
    ('contenttypes', '0002_remove_content_type_name'),
]

Затем снова запустите миграцию.

Ответ 6

Мне пришлось объединить две системы в Django 1.9.1, и я просто не мог преодолеть эту ошибку:

 "Error creating new content types. Please make sure contenttypes "

Обширный поиск в googling и stackoverflowing был бесплодным. Наконец, я добавил строку отладки в

~/.virtualenvs/(venv_name)/lib/python2.7/site-packages/django/contrib/contenttypes/models.py

 except (OperationalError, ProgrammingError, IntegrityError):
        # It possible to migrate a single app before contenttypes,
        # as it not a required initial dependency (it 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."
        )

Это сказало мне имена моделей, которые вызывают ошибку, и в конечном итоге привели к исправлению.

Я использую Postgres, а порядковые номера для таблиц django_content_type и auth_permission не указывали на конец таблицы, что приводило к сбоям вставки.

Эти 2 строки зафиксировали это (на основе этого 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);

Ответ 7

Отключите сервер, он должен быть открыт в другом терминале и попытаться выполнить его миграцию!