Я рассматриваю возможность использования Django для запуска проекта (fyi, игра на основе браузера), и одна из особенностей, которые мне больше всего нравятся, заключается в использовании syncdb
для автоматического создания таблиц базы данных на основе Модели Django, которые я определяю (особенность, которую я не могу найти в любой другой структуре).
Я уже думал, что это было слишком хорошо, чтобы быть правдой, когда я увидел это в документации :
Syncdb не будет изменять существующие таблицы
syncdb будет создавать таблицы только для моделей, которые еще не установлены. Он никогда не выдает утверждения ALTER TABLE, чтобы соответствовать изменениям, внесенным в класс модели после установки. Изменения в классах моделей и схемах базы данных часто связаны с некоторой формой двусмысленности, и в этих случаях Django должен был догадываться о правильных изменениях. Существует риск того, что критические данные будут потеряны в процессе.
Если вы внесли изменения в модель и хотите изменить таблицы базы данных для соответствия, используйте команду sql для отображения новой структуры SQL и сравните ее с существующей схемой таблицы, чтобы выработать изменения.
Кажется, что изменение существующих таблиц должно быть сделано "вручную".
То, что я хотел бы знать, - лучший способ сделать это. Приходят два решения:
- Как указывается в документации, внесите изменения вручную в БД:
- Сделайте резервную копию базы данных, протрите ее, снова создайте таблицы (с помощью syncdb, так как теперь создавайте таблицы с нуля) и импортируйте резервные данные (это может занять слишком много, если база данных большая)
Любые идеи?