Синтаксическая ошибка Django SQL при использовании двух разных движков баз данных

Я пытаюсь использовать django с несколькими базами данных. Одна по умолчанию postgres-db, а другая mysql-db. Я следовал документации о том, как настроить обе базы данных: https://docs.djangoproject.com/en/4.0/topics/db/multi-db/

Мой settings.py выглядит следующим образом:

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": "default",
        "USER": "----------",
        "PASSWORD": "-----------",
        "HOST": "localhost",
        "PORT": "5432",
    },
    "data": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "data",
        "USER": "---------",
        "PASSWORD": "---------",
        "HOST": "localhost",
        "PORT": "3306",
    }
}

При запросах к базе данных по умолчанию все работает нормально. Но кажется, что django использует синтаксис postgres-db sql для запросов к mysql-db:

# Model "Test" lives in the mysql-db.
Test.objects.using('data').all()

# gives me the following exception

psycopg2.errors.SyntaxError: ERROR:  SyntaxError at ».«
LINE 1: EXPLAIN SELECT `test`.`id`, `test`.`title`, ...

Он даже использует клиент postgres-db psycopg2 для генерации/выполнения.

Использование необработанного запроса работает нормально, это означает, что он правильно использует mysql-db для конкретного запроса.

Test.objects.using('data').raw('SELECT * FROM test')
# works

Как настроить Django на использование правильного синтаксиса SQL при использовании нескольких баз данных разных движков?

Спасибо!

Вернуться на верх