[django] Ошибка: типы содержимого не могут быть сброшены - PullRequest
3 голосов
/ 12 сентября 2011

Я сбрасываю типы содержимого перед загрузкой устройства (см. Проблемы с типами содержимого при загрузке устройства в Django ).

Но типы содержимого не могут быть сброшены:

... project_dir> manage.py reset contenttypes

Вы запросили сброс базы данных.Это НЕОБХОДИМО УНИЧТОЖИТ любые данные для приложения «contenttypes» в базе данных «my_database».Вы уверены, что хотите это сделать?

Введите «да», чтобы продолжить, или «нет», чтобы отменить: да

Ошибка: ошибка: не удалось создать типы содержимогобыть сброшенВозможные причины:

  • База данных не работает или настроена неправильно.
  • По крайней мере одна из таблиц базы данных не существует.
  • Недопустимый SQL.

Подсказка: посмотрите на вывод 'django-admin.py sqlreset contenttypes '.Это SQL, который не удалось выполнить этой команде.

Полная ошибка: (1217, «Невозможно удалить или обновить родительскую строку: сбой traint внешнего ключа завершен»)

Любая помощь будет оценена.Спасибо!

1 Ответ

0 голосов
/ 06 сентября 2012

На ваш вопрос есть еще один ответ - используйте натуральные ключи для приборов.

Ошибка «Невозможно удалить или обновить родительскую строку: не удается выполнить проверку внешнего ключа» означает, что строка типа содержимого не может быть удалена, поскольку существует другой объект, указывающий на эту строку. Например. если есть какое-либо непустое родовое отношение внешнего ключа, которое имело бы место.

Если вам действительно нужно сбросить приложение типа контента, вы можете получить команду SQL, которая необходима для этого, и изменить ее на использование оператора CASCADE. Однако это опасно , так как удаляет не только типы контента, но и строки из других таблиц, которые указывают на типы контента.

Поэтому я советую воссоздать приборы, используя натуральные ключи.

...