Получение ошибки с SOUTH и django миграцией - PullRequest
3 голосов
/ 05 июля 2011

Я получил эту ошибку при переносе приложения Sentry в django.Я использую mysql

 ! Since you have a database that does not support running
 ! schema-altering statements in transactions, we have had
 ! to leave it in an interim state between migrations.

! You *might* be able to recover with:   = DROP TABLE `sentry_groupedmessage` CASCADE; []
   = DROP TABLE `sentry_message` CASCADE; []

что мне делать

Ответы [ 2 ]

2 голосов
/ 05 июля 2011

Ваша проблема в том, что миграция не удалась, и MySQL не поддерживает транзакции, поэтому Саут не знает, в каком состоянии находятся таблицы.

Единственный способ, как вы можете восстановить его из этоготочка:

  • Проверьте таблицы и проверьте, в каком состоянии они находятся (какие столбцы изменены и т. д.)
  • Сделайте резервную копию обеих таблиц (выгрузите их)
  • Удалите таблицы.
  • Создайте заново таблицы с помощью команды migrate.
  • Если миграция еще не была успешной, используйте южную сторону, чтобы перейти в состояние, в котором таблица соответствует схеме вашего дампированногоout data
  • Импорт дампа
  • Миграция снова
0 голосов
/ 13 апреля 2014

Дополнительно к ответу Томаса;Если вы получаете IntegrityError для ключа content_type_id во время повторного запуска миграции, также удалите разрешения, созданные специально для моделей приложения.Ошибка будет выглядеть следующим образом:

IntegrityError: (1062, "Duplicate entry '209-view_<model name>' for key 'content_type_id'")

В этом случае удалите эти разрешения из таблицы auth_permission.Вы можете выполнить like поиск по названию вашей модели, чтобы найти все разрешения (просмотреть, добавить, изменить, удалить).

Select * from auth_permission where codename like '%<model name>'

Приведенная выше команда предоставит вам всеРазрешение для вашей модели, вы можете получить их ID и удалить (или просто написать объединение).

...