2015-06-16 5 views
4

Любая идея, почему я получаю эту ошибку при попытке миграции?Django 1.8 migrate - отношение «django_content_type» уже существует

django.db.utils.ProgrammingError: relation "django_content_type"

Я использую с помощью Django 1.8 & PostGreSQL

+0

Удалено Спасибо и Сиг. Добавлены соответствующие теги. – Dijkgraaf

+0

Возможный дубликат [Как я могу решить "django \ _content \ _type уже существует??] (Http://stackoverflow.com/questions/29760817/how-can-i-resolve-django-content-type-already-exists) –

ответ

5

Вы будете должны использовать '--fake-начальное' при переносе; он имел обыкновение быть неявным, но теперь стало явным:

https://docs.djangoproject.com/en/1.8/ref/django-admin/#django-admin-option---fake-initial

Цитирую:

This option is intended for use when first running migrations against a database that preexisted the use of migrations.

Удачи!

+1

Спасибо за вашу помощь @FlipperPA, но это миграция все еще не происходит. Теперь я вижу: 'django.db.utils.ProgrammingError: column" name "отношения" django_content_type "не существует'. Есть идеи? Это просто вопрос создания вручную? – adamteale

+2

Я не уверен, в чем проблема, но в Django 1.8 поле «имя» в ContentType стало свойством.Это вызвало у нас проблемы при переходе на 1,8 в развитие, в то время как некоторые люди все еще использовали 1.7. https://docs.djangoproject.com/en/1.8/ref/contrib/contenttypes/#the-contenttype-model Надеюсь, это может помочь вам в правильном направлении? – FlipperPA

+1

Еще раз спасибо, я думаю, что мои миграции закрыты, и у меня есть небольшая ручная работа, чтобы сделать на db. Посмотрите ссылку. Ура! – adamteale

3

Я, как и многие, действительно не понимаю проблему. Я смог разработать решение, которое сработало для меня.

  1. Прокомментируйте все ваши установленные установленные приложения. Итак, у вас есть только материал Django.
  2. Migrate только Auth: ./manage.py migrate auth
  3. Перенесите все остальное: ./manage.py migrate
  4. Undo шаг 1.
  5. перенесите все ваши приложения: ./manage.py migrate.

Удачи вам!

3

Это работает для меня:

  1. ./manage.py мигрирует Auth --fake-начальная (это выдает ошибку, но игнорировать его)

  2. ./manage.py мигрирует - fake-initial

+0

Это сработало для меня. Но почему? Не могли бы вы объяснить мне? – cjahangir

+0

@cjahangir печально нет. я не вырыл достаточно глубоко, чтобы понять, в чем проблема. это происходит только тогда, когда я перехожу на старый старый код до 1.6, поэтому я просто перешел к более крупным вещам, когда он сработал. –

0

@ Решение Джоша работало для меня со следующими изменениями. До стадии 1, я заново добавил недостающую колонну:

ALTER TABLE django_content_type ADD COLUMN name character varying(50) NOT NULL DEFAULT 'run migrate.py'; 

Запуск python manage.py migrate auth удаляет эту колонку, presumabley делает один или несколько других изменений, которые не удалось на некоторых запущенного ранее migrate.

При запуске migrate на шаге 3, я включил --fake-initial флаг:

python manage.py migrate --fake-initial 

Все, кажется, установить еще раз направо.

Смежные вопросы