Как подключить современный сервер django к базе данных MySQL 5.1? (Обновление версии MySQL не является вариантом)
У меня есть MySQL-сервер, который является частью программной системы, разработанной не мной. Поэтому я не могу обновить этот MySQL-сервер до более новой версии, поскольку это может нарушить способность программной системы взаимодействовать с этой базой данных.
Мне нужен доступ на чтение к этой базе данных в моем публичном django-приложении. Версия django - последняя LTS (4.2).
В документации к Django перечислены два варианта драйвера API баз данных для MySQL:
Они оба в своих самых актуальных версиях не поддерживают доступ к серверам MySQL 5.1
Вариант 1. по-прежнему работает на Debian 11, с некоторыми перезаписанными методами в подклассе, но не на Debian 12.
Как мне убедиться, что мое приложение django продолжает работать, когда я обновляю его рабочий сервер с Debian 11 до 12?
Я пробовал использовать MySQL Connector/Python с опцией use_pure
, но это дает мне ошибку django.db.utils.DatabaseError: (1193, "1193 (HY000): Unknown system variable 'default_storage_engine'", 'HY000')
.
Я не знаю, что нужно изменить в этом подклассе, чтобы восстановить совместимость с MySQL 5.1.
Я нашел решение для моего конкретного случая использования. Оно сводится к подклассификации бэкенда базы данных mysql в django (django.db.backends.mysql
) и адаптации параметров, которые он передает в mysqlclient
(MySQLdb.connect
) при подключении к устаревшему MySQL-серверу.