django + south: команда migrate не создает таблицу в базе данных - PullRequest
1 голос
/ 27 марта 2012

У меня проблема с strnage.В моем проекте django есть модуль / приложение myapp.Мой проект использует юг для выполнения миграции схемы.На localhost я запустил ./manage.py schemamigration myapp --initial, затем я выполнил команду migrate.

Но когда в производственной среде я выполняю команду migrate, это не создает соответствующую таблицу (моделей myapp) в базе данных.

Это странно, потому что, если я выполняю migrate --list,myapp необходимо перенести, и все они помечены (символом *).

Итак, я думаю об удалении myapp и воссоздании его с нуля (с соответствующими миграциями).Есть ли лучшее решение?

РЕДАКТИРОВАТЬ: я пытался удалить myapp и воссоздать его с нуля.Поэтому я также удалил таблицы myapp в базе данных (на локальном хосте и на производственном сервере), и после всего, что я выполнил:

schemamigration myapp --initial команда на локальном хосте

migrate myapp команда на локальном хосте

migrate myapp 0001 --fake на рабочем сервере

, но South продолжает не создавать таблицы myapp в базе данных производственного сервера.

Ответы [ 3 ]

1 голос
/ 23 октября 2015

Если вы случайно или намеренно удалили таблицу в своей БД и пытаетесь запустить ./manage migrate myapp Это не приведет к созданию удаленной таблицы в вашей БД. Потому что Юг не касается базы с вашей БД.

В случае, если вы хотите заново создать свою таблицу. Перенесите свою схему на предыдущую версию и перенесите ее последней. Пожалуйста, используйте нижеприведенный код соответственно

manage.py migrate myapp 0002 --fake
manage.py migrate myapp

примечание: 002 - ваша предыдущая версия миграции.

0 голосов
/ 28 июня 2014

Я знаю, что уже немного поздно, но возникла та же проблема, и я обнаружил, что проблема заключалась в том, что мой manage.py указывал на неправильный файл настроек, следовательно, на неправильную БД. Убедитесь, что ваш manage.py указывает на правильный файл настроек и выполняется миграция на правильную БД. Это может произойти, если вы используете несколько файлов manage.py или несколько файлов настроек.

0 голосов
/ 27 марта 2012

если вы удалили свои таблицы, вы не должны запускать --fake, если вы сначала не сделали manage.py syncdb.Без таблицы вы сможете запустить python manage.py migrate myapp и покончить с ней (или manage.py syncdb).Первая миграция, созданная --initial, содержит операторы создания таблицы.

--fake явно указывает югу не делать ничего, кроме как притворяться, что она перенесена (выполненные изменения БД) и пометить таблицу истории как таковую.

...