Разъяснение по django syncdb - все вариант

Я пытаюсь понять что именно ./manage.py syncdb --all делает? Недавно у меня была проблема с базой данных, которую я смог исправить с помощью этой команды, но я не совсем уверен, что она делает за кулисами. Я понимаю, что syncdb создает таблицы для установленных приложений, которые не переносятся с юга, и что те, которые находятся под контролем миграции на юг, игнорируются, если не указана опция --all, но меня смущает то, что на самом деле происходит и когда использовать Это. Я не могу найти что-либо об этой опции в django-admin docs, а на страницах руководства говорится только об этой опции.

--all                 Makes syncdb work on all apps, even migrated ones. Be
                        careful!

Почему я должен быть осторожен? Что именно это делает? Это полностью удаляет базу данных и начинает заново, что, как я полагаю, приведет к потере всех моих данных, хранящихся в базе данных (верно?), Или что-то еще происходит здесь? Я использую Django 1.6, если это имеет значение.

1 ответ

Решение

Когда вы устанавливаете на юг, команда Django syncdb заменяется собственной. Это южная версия Syncdb, которая имеет --all вариант, но его не рекомендуется:

Если вы хотите запустить syncdb во всех приложениях, используйте --allно будьте осторожны; это выведет схему базы данных и миграции из синхронизации. Если вы сделаете это, вы можете исправить это с помощью:

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

Другие вопросы по тегам