Изменение моделей в Django приводит к повреждению базы данных? - PullRequest
3 голосов
/ 03 апреля 2010

Я добавил и удалил поля в моем файле models.py, а затем запустил manage.py syncdb. Обычно мне нужно выйти из оболочки и перезапустить ее, прежде чем syncdb что-нибудь сделает. И даже после этого, я получаю ошибки при попытке доступа к страницам администратора, кажется, что некоторые новые поля, которые я добавил, все еще не отображаются в модели:

Caught an exception while rendering: no such column: mySite_book.Title

Ответы [ 3 ]

9 голосов
/ 03 апреля 2010

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

Вы можете либо:

  1. Удалите измененные таблицы и снова выполните syncdb. Это разумно, когда вы разрабатываете свое приложение, и у вас нет реальных данных в вашей базе данных.
  2. Используйте инструмент миграции, например Юг , который выполняет миграцию базы данных (например, скрипт обновления hibernate).
  3. Отредактируйте базу данных вручную и добавьте / удалите соответствующие поля для ранее существующих таблиц.
4 голосов
/ 04 апреля 2010

Для меня (если вы делаете это с тестовыми данными, а не делаете это в производственной среде), намного проще просто сдуть test.db и создать новый ./manage.py syncdb.Просто пища для размышлений ...

2 голосов
/ 03 апреля 2010

Просто чтобы расширить ответ @ Бартелеми, есть несколько инструментов миграции Django :

...