1

South の移行履歴をリセットしようとしていますが、myapp の移行を実行できません。私のsettings.pyは次のとおりです。

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

残念ながら私が試したことはうまくいきません:

  1. 既存のすべての移行ファイルを削除/rm
  2. 南以外のすべてをコメントアウトします
  3. 最初の syncdb を実行する
  4. ./manage.py schemamigration app_name --initialアプリごとに実行
  5. 次に、アプリを 1 つずつ移行します

このプロセスは、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-ghost-migrations を渡すと、myapp に移行するものがないことがわかりますが、明らかにそうではありません。--fake 0002 を実行すると、0002 以降に移行するものは他にないことがわかります。これにアプローチする別の方法はありますか?

4

1 に答える 1

3

移行履歴を完全に削除するには、データベースのテーブルのすべての行を削除する必要があります。

south_migrationhistoryデータベースに移動し、テーブル内のすべての行を消去します。

delete from south_migrationhistory;

または、特定のアプリの履歴をリセットするだけの場合は、次のことができます。

delete from south_migrationhistory where app_name='your_app_name';

お役に立てれば!

于 2013-06-26T14:14:33.500 に答える