2013-06-26 2 views
1

Я пытаюсь восстановить историю миграции юга и не могу выполнить миграцию для запуска myapp. Мой settings.py является:Django South - Невозможно перезапустить миграцию приложений

... 
'south', 
'myapp', 
'allauth', 
'allauth.account', 
'allauth.socialaccount', 
'allauth.socialaccount.providers.facebook', 
'payments', 

То, что я пытался, что, к сожалению, не работает для меня:

  1. Delete/гт все существующие файлы миграции
  2. закомментируйте все за исключением юго
  3. Выполните начальную SyncDB
  4. Run ./manage.py schemamigration app_name --initial для каждого приложения
  5. Затем перенести приложения появится один за

Этот процесс отлично работает для всего, кроме myapp. Когда я пытаюсь сделать начальную миграцию для MyApp я получаю:

hostMigrations: 
! These migrations are in the database but not on disk: 
<myapp: 0002_..._> 
! I'm not trusting myself; either fix this yourself by fiddling 
! with the south_migrationhistory table, or pass --delete-ghost-migrations 
! to South to have it delete ALL of these records (this may not be good). 

Если я прохожу --delete-призрак миграции, то он говорит мне, что нет ничего, чтобы мигрировать MyApp, что, очевидно, это не так. Когда я -fake 0002 говорит мне, что после 0002 нечего мигрировать. Есть ли другой способ приблизиться к этому?

ответ

3

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

Перейти к базе данных и удалить все строки в south_migrationhistory таблицы:

delete from south_migrationhistory; 

или если вы просто хотите сбросить историю конкретного приложения вы можете сделать:

delete from south_migrationhistory where app_name='your_app_name'; 

Надеется, что это помогает !

+0

Из любопытства, будет ли '-delete-ghost-migrations' делать то же самое в этом случае? – karthikr

+0

Я думаю, что он делает больше, поэтому он дает ошибки, как и выше. Я несколько раз сталкивался с перезагрузкой миграций, и это самый прямой, полностью контролируемый мной полный сброс. –

+0

Возможно, вы правы, но я просто просто 'delete from south_migration_history, где app_name = 'myapp'', поэтому мне не нужно запускать другие миграции и снова входить в другие проблемы :). Исправьте меня, если я ошибаюсь – karthikr