Как восстановить Юг от промывки БД - PullRequest
1 голос
/ 28 ноября 2011

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

Данные перезагрузились, я внес изменение в модель и применил нормальный ./manage.py schemamigration app --auto, а затем ./manage.py migrate app (который работал до этого момента).

В этот момент я начал получать сообщение об ошибке:

django.db.utils.DatabaseError: relation "app_model" already exists

И трассировка, похоже, вызывает исходный файл миграции 001. ТакЯ думаю, что ответ заключается в том, чтобы сделать что-то вроде:

./manage.py migrate app 0005 --fake

Где текущая миграция, на которую я обращаюсь, это 0006 (то есть, где миграции начали терпеть неудачу), а затем южная база данных в postgresдолжен вернуться туда, где он был до того, как я по глупости его смыл.На данный момент я должен быть в состоянии

./manage.py migrate app

Может кто-нибудь сказать мне, что этот подход является правильным?Или если нет, то каков правильный подход?

Ответы [ 2 ]

2 голосов
/ 01 декабря 2011

После python manage.py migrate app --fake сделать python manage.py schemamigration app --auto а затем сделать python manage.py migrate app

0 голосов
/ 12 января 2015

Вы также можете сделать это более общим:

python manage.py migrate
python manage.py flush
python manage.py migrate --fake

Это восстановит всю южную историю после сброса

...