DjangoプロジェクトをテストするときDATABASE_OPTIONSを適用する(あるいは、それはMySQL用のInnoDBを使用するようにしてください)
-
21-08-2019 - |
質問
タイトルが言うように、私は私が./manage.py test
経由で私のテストを実行したときにDATABASE_OPTIONS設定を適用します。 django/db/backends/creation.py
では、それはcreate_test_db()
と_create_test_db()
の両方ですべてでこのオプションを考慮していない。
これは、InnoDBのでtransaction.rollback
機能を使用するビューでテストを壊します。これは、テストデータベースはInnoDBストレージエンジンを使用して作成されていないと思われます。
任意の回避策はありますか。この問題に解決する?
解決 2
私は自分で理由を見つけました。私は、通常のTestCase基底クラスの代わりにTransactionTestCaseを使用する必要があります。 マニュアルを参照してください。こちら
他のヒント
回避策の一つは、InnoDBのようにサーバー上のデフォルトのストレージエンジンを設定することがあるかもしれません。
のmy.cnfでます:
set default_storage_engine=InnoDB
Djangoは明示的にMyISAMテーブルを選んされていない限り、それは動作するはずです。
所属していません StackOverflow