Applicando DATABASE_OPTIONS quando test progetto Django (o fare in modo da utilizzare InnoDB per MySQL)
-
21-08-2019 - |
Domanda
Come dice il titolo, voglio applicare le impostazioni DATABASE_OPTIONS quando eseguo il mio test tramite ./manage.py test
. In django/db/backends/creation.py
, non considera questa opzione a tutti in entrambe create_test_db()
e _create_test_db()
.
Questo rompe un test con una vista che utilizza transaction.rollback
funzione con InnoDB. Sembra che i database di test non sono stati creati con il motore di storage InnoDB.
C'è qualche soluzione o correzione a questo problema?
Soluzione 2
Ho trovato la ragione da sola. Devo usare TransactionTestCase invece di normale classe base TestCase. , consultare la documentazione.
Altri suggerimenti
Una soluzione potrebbe essere quella di impostare il motore di memorizzazione predefinito sul server per InnoDB.
in my.cnf:
set default_storage_engine=InnoDB
Che dovrebbe funzionare a meno che Django è in ripresa esplicitamente MyISAM.