Anwenden von DATABASE_OPTIONS beim Testen Django-Projekt (oder machen es verwenden InnoDB für MySQL)
-
21-08-2019 - |
Frage
Wie der Titel schon sagt, ich will DATABASE_OPTIONS Einstellungen zu übernehmen, wenn ich meine Tests über ./manage.py test
laufen. In django/db/backends/creation.py
, hält sie diese Option nicht gar in beiden create_test_db()
und _create_test_db()
.
Dies bricht einen Test mit einer Ansicht, die transaction.rollback
Funktion mit InnoDB verwendet. Es scheint, dass Test-Datenbanken nicht mit InnoDB erstellt.
Gibt es eine Abhilfe oder Update für dieses Problem?
Lösung 2
Ich habe den Grund von mir gefunden. Ich habe TransactionTestCase anstelle der normalen Testcase Basisklasse zu verwenden. die Dokumentation.
Andere Tipps
Eine Abhilfe könnte sein, die Standard-Speicher-Engine auf dem Server InnoDB einzustellen.
in my.cnf:
set default_storage_engine=InnoDB
Das sollte funktionieren, wenn django ausdrücklich MyISAM Kommissionierung wird.