2

タイトルが不明確ですが、私はそれを知っています。
アプリケーションを単体テストしたいので、実行したい小さなテストを書きました。起動しましpython manage.py testたが、DB にエラーがありました:

The error was: ERREUR:  the relation « me_auth_emailuser » doesn't exists

Error in migration: authtoken:0001_initial
DatabaseError: ERREUR:  the relation « me_auth_emailuser » doesn't exists

(フランス語からの翻訳)
このテーブルは南を使用して移行されました。私のアプリケーションでは、次を使用します。

python manage.py syncdb
python manage.py migrate me_auth
python manage.py migrate

これらのコマンドではエラーが発生しないため、何が起こっているのかわかりません...誰かがそれを手伝ってくれますか? :)

4

1 に答える 1

2

おそらく、ある時点で関係がありましたがme_auth_email_user、それはもうありません。新しいデータベースを作成して実行すると、同じエラーが発生すると思います。

python manage.py syncdb
python manage.py migrate

これには 2 つの解決策があります。

  1. 単体テストで South を使用しないでください (テストしてINSTALLED_APPSいる場合は以下のように South を削除するか、 で設定SOUTH_TESTS_MIGRATE = Falseしますsettings.py)。
  2. 破損した移行を手動で修正します。

テスト中に South を削除する手っ取り早いハックな方法はsettings.py、通常のINSTALLED_APPS設定の下に、次のようなものを含めることです。

import sys

if 'test' in sys.argv:
  INSTALLED_APPS = [app for app in INSTALLED_APPS if app != 'south']

一般に、移行をテストすることは良いことです。いつでも新しいデータベースを作成して実行できるはずですmigrate。したがって、オプション (2) を検討することを強くお勧めします。

于 2013-07-16T10:26:54.880 に答える