6

私は南部のdjangoプロジェクトで作業するのに問題があります。アプリを南部に変換することに関する南部のドキュメントに従い、ここも見ました(南部の移行が機能しないのはなぜですか? )しかし、すべて無駄です。

INSTALLED_APPSと runにsouth を追加した後syncdb

Synced:
 > django.contrib.messages
 > django.contrib.staticfiles
 > smartmin
 > nsms.console
 > django_extensions
 > pagination
 > restaurant_detail
 > live
 > debug_toolbar
 > orders
 > django.contrib.admindocs

Not synced (use migrations):
 - django.contrib.auth
 - django.contrib.contenttypes
 - django.contrib.sessions
 - django.contrib.sites
 - guardian
 - south
 - django_quickblocks
 - rapidsms
 - rapidsms_httprouter
 - sorl.thumbnail
 - djangoratings
 - agon_ratings
 - django.contrib.admin
(use ./manage.py migrate to migrate these)

この時点でpython manage.py migrate、このコマンドを実行すると、エラーが発生django.db.utils.DatabaseError: relation "south_migrationhistory" does not exist LINE 1: ...gration", "south_migrationhistory"."applied" FROM "south_mig... します。ここで何が間違っていますか?

4

5 に答える 5

14

If this is your first migration or you just want to start over:

  1. Drop and create your current database
  2. Remove your migrations directory: rm -Rf your_app/migrations/
  3. Sync and migrate in just one command: python manage.py syncdb --migrate

Next migrations would need:

  1. python manage.py schemamigration your_app --auto
  2. python manage.py migrate your_app

That works for me :)

于 2013-04-22T11:01:54.047 に答える
2

この問題は、意味のあるアドバイスに従うことで発生する可能性がありpython manage.py schemamigration south --initialます。デバッグ試行のいずれかの時点で試した場合、South アプリ自体のサイト パッケージに「移行」フォルダーが作成されます。残念ながら、migrationsフォルダーの存在は、変更された syncdb プロセスを実行するときにアプリをスキップするかどうかを South が決定する方法です。そのアプリの場合も含めて... 南です。

データベースを削除して最初からデバッグしようとすると、South の変更された syncdb はテーブルの作成をスキップしsouth_migrationhistoryます。これは、移行フォルダーがよりよく認識され、移行テーブルが機能するためにはテーブルが必要であると想定しますsouth_migrationhistory

この問題を解決するには:

  1. サイト パッケージに移動しmigrations/、south アプリのフォルダーを削除します。
  2. python ./manage.py syncdb最後にもう一度実行

ピップ経由でサウスをアンインストール/再インストールしても、問題のあるフォルダーはそのままになるため、実際にはカットされません。

代わりに、Marius Grigaitisが同じエラーの回避策を提案しましたが、当時は南のバグに起因するとされていました。

于 2014-02-23T22:49:44.320 に答える
1

サウステーブルを作成するには、最初にサウス自体を移行する必要があります。その後、他のアプリケーションを移行できます。

# python manage.py migrate south
# python manage.py migrate
于 2013-04-22T11:06:46.353 に答える
0

データベースに移行のテーブルが作成されていないようです。おそらくこれが機能するので、少し奇妙です:

python manage.py schemamigration south --initial
python manage.py migrate south

その後、他の移行を続行します。

于 2013-04-22T18:28:33.960 に答える