Ошибка БД при запуске python manage.py loaddata datadump.json - PullRequest
0 голосов
/ 07 декабря 2010

Я перевожу свою базу данных Django из sqlite в mysql. Я сделал следующее без проблем:

python manage.py dumpdata> datadump.json Измените файл settings.py на базу данных mysql.

Но когда я запускаю следующую команду python manage.py loaddata datadump.json Я получаю эту ошибку:

IntegrityError: (1062, "Дублирующая запись '13 -13 'для ключа' from_category_id '")

Может кто-нибудь сказать мне, как решить эту проблему, чтобы я мог снова запустить команду и, надеюсь, загрузить свои данные?

Спасибо, J.

1 Ответ

1 голос
/ 07 декабря 2010
  1. Есть ли у вас данные в БД ?,
  2. попробуйте с отступом --4, чтобы получить версию, на которую вы можете смотреть
  3. Опубликовать пример данных
  4. Похоже, вы получили нарушение ключа-дубликата или ваши данные, которые вы пытаетесь вставить, не соответствуют типу столбца, т.е. проверьте ограничения, применяемые в вашем models.py, типах полей и таблицах, созданных в mysql

Тогда возникает вопрос: почему он работает в SQLITE, а не в моем sql?

На самом деле, SQLITE не выполняет никакой проверки типов, то есть вы можете легко вставить текст в целочисленное поле. Вам нужно будет очистить ваши данные перед вставкой в ​​MySQL.

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

С http://www.sqlite.org/lang_createtable.html

...