2017-11-07 5 views
0

MySQL Connector/Pythonに接続されたMySQLデータベースからinspectdbを使用してモデルスキーマをインポートしました。テストを実行する際に間違ったテーブルが使用される

私がテストを実行すると、システムは示しています。この接頭辞が追加されているのはなぜ

django.db.utils.ProgrammingError: Table 'test_mydb.cards' doesn't exist 

しかし、テーブル名は

だけmydb.cards、ないtest_mydb.cardsのですか?私のアプリの名前はちょうどcontainerです。

+1

あなたは 'manage.py test'を実行Django Models Options: Managedが、それはテストがでマックしていないことを確認する(DB名に' test_'を付加することで)ブランドの新しいデータベースを作成し、あなたの実データ。しかし、それはDjangoが正しい表を作成していない理由を説明していません。 –

+0

Djangoに同じDBを使用させる方法はありますか? MySQL Workbenchでスキーマ全体を読み取り専用に設定しました。 –

答えて

0

をmonkeypatchingまたは回避策なしにテストスイートにアクセスすることはできません:にmanagedというプロパティがあり、テーブルごとにmodels.py Class Metaになっています。私は自分でそれを設定したことはありません。inspectdbを実行した後のデフォルトです。

お読みください:

0

Djangoはunittestモジュールをテスト用に使用します。また、空のデータベースまたはフィクスチャーがいっぱいになったデータベース上でテストが理想的に実行されるように、テスト用の空のデータベースを作成します。データベースを必要

Testsは(すなわち、モデルのテストは)あなたの 「本当の」(本番)データベースを使用しません。別々の空のデータベースがテストのために で作成されます。

テストに合格したかどうかにかかわらず、すべてのテストが実行されたときにテストデータベースは、 が破壊されています。

あなたがテーブルのテストは移行していないすべてのテーブルとして、アクセスしようとするため、移行がソートされない場合はチェックしてください、私はその理由を見つけ

関連する問題