SQLite, похоже, игнорирует параметр db_table при выполнении тестов на MacOS, но отлично работает на Ubuntu
Итак, проблема в том, что когда я запускаю тесты Django на MacOS, я получаю следующие ошибки:
Traceback (most recent call last):
...
django.db.utils.OperationalError: no such table: main.estimates_estimate
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
...
raise CommandError(
django.core.management.base.CommandError: Database file:memorydb_default?mode=memory&cache=shared couldn't be flushed. Possible reasons:
* The database isn't running or isn't configured correctly.
* At least one of the expected database tables doesn't exist.
* The SQL was invalid.
Hint: Look at the output of 'django-admin sqlflush'. That's the SQL this command wasn't able to run
Однако он проходит, если я меняю базу данных на MySQL. Также он проходит на Ubuntu 20.04 с SQLite в качестве бэкенда БД.
Просто кажется, что db_table
опция модели почему-то игнорируется.
class Estimate(models.Model):
class Meta:
db_table = "estimates"
На Ubuntu db.sqlite3
имеет estimates
таблицу после завершения выполнения тестов, но на MacOS имеет estimates_estimate
.
Что я пробовал
Я искал любые возможные отличия sqlite на Mac/Linux, но не смог найти ничего связанного. Также я пытался удалить __pycache__
dirs и разные версии Django (2.2 и 3.2). Я создал фиктивное приложение с такой же структурой файлов и схемой базы данных, но не смог воспроизвести проблему.
Я бы предпочел не погружаться в причины, по которым я хочу запускать тест с SQLite, если у меня настроен MySQL.