Django & South: добавление нового поля, но DatabaseError происходит, «таблица уже существует»

При попытке добавить новое поле в существующую таблицу Model /, я получаю DatabaseError с «таблицей уже существует». Я запускаю миграции до этого, поэтому я немного озадачен, почему добавление нового поля вызывает эту ошибку.

Выполненные команды:

python manage.py schemamigration app --auto python manage.py migrate app 

На предыдущие SO-вопросы, подобные этому, был дан ответ с помощью миграции.

 python manage.py migrate app --fake python manage.py migrate app 

Проблема, которая возникает из этого, заключается в том, что столбец не создан. Поэтому, когда вы запускаете сервер, вы увидите DatabaseError «нет такого столбца».

Что касается моей модели, я добавляю только CharField.

Заранее спасибо за вашу помощь-

schemamigration app --initial вам нужно сделать schemamigration app --initial без schemamigration app --initial без вашего нового поля, а затем migrate app --fake 0001 (или какой бы номер миграции он не вернул), чтобы установить южную базу данных в это состояние (уже созданные таблицы).

Добавьте новое поле, затем запустите schemamigration myapp --auto , а затем выполните миграцию.

Я прокомментировал это поле, выполнил схему миграции, а затем выполнил миграцию. Скомпилировано поле, запущено schemamigration, затем мигрировано, и оно сработало. Не уверен, что я делаю неправильно.

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

Если вы посмотрите на таблицу юга * в базе данных, вы узнаете, что юг хранит журналы о миграции db в базе данных. Общий способ заключается в подделке миграции. Есть fake аргумент для Юга.

здесь вы можете узнать, что это значит: http://south.readthedocs.org/en/latest/commands.html#options