Как использовать Django с устаревшей базой данных mysql 5.7 (проблемы с версией mysqlclient)

Я начал новый проект Django, но он должен работать с унаследованной базой данных MySQL 5.7. На данный момент у меня есть Django проект, с указанной базой данных в settings.py и установленной mysqlclient. Первое, что я попробовал, это

python manage.py inspectdb --database dbname

но я получил эту ошибку:

MySQLdb.OperationalError: (1043, 'Bad handshake')

Я уже понял, что это происходит потому, что у меня mysqlconnector для версии 8.0, а она не совместима с mysql 5.7. Я также обнаружил, что при установке mysqlconnector его версия зависит от того, что у меня написано в mysql_config. Если я набираю

mysql_config --version

Я получаю

8.0.30

И я не могу понять почему, потому что если я запускаю

sudo dpkg-reconfigure mysql-apt-config

В нем говорится, что в настоящее время я выбрал mysql-5.7. my

Что на самом деле представляет собой mysql_config и почему он настроен на другую версию? Как я могу переключить его на 5.7 и установить правильную версию mysqlclient? Или есть другие способы заставить mysql 5.7 и мой проект Django работать вместе?

Проблема была связана с другой версией libmysqlclient-dev.

mneznaev@mneznaev-desktop:~$ apt list --installed | grep mysql

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libmysqlclient-dev/focal-updates,focal-security,now 8.0.30-0ubuntu0.20.04.2 amd64 [installed]

Поэтому я удалил его

sudo apt remove libmysqlclient-dev

Поиск других версий

sudo apt-cache policy libmysqlclient-dev
libmysqlclient-dev:
  Installed: (none)
  Candidate: 8.0.30-0ubuntu0.20.04.2
  Version table:
     8.0.30-0ubuntu0.20.04.2 500
        500 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
     8.0.19-0ubuntu5 500
        500 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
     5.7.39-1ubuntu18.04 500
        500 http://repo.mysql.com/apt/ubuntu bionic/mysql-5.7 amd64 Packages

И установил правильный

sudo apt install libmysqlclient-dev=5.7.39-1ubuntu18.04
<<<После этого я переустановил

. Я использую mysqlclient, так чтоpipenv

pipenv uninstall mysqlclient
pipenv install mysqlclient

Знайте, похожи ли эти действия на pipenv reinstall mysqlclient в данном случае.

И bad Handshake ошибка исчезла.

Но теперь у меня другая ошибка

1193, "Unknown system variable 'default_storage_engine'"

Это связано с тем, что унаследованная база данных на самом деле не 5.7, а 5.1. И до версии 5.6 эта переменная имела другое название: storage_engine (без default_)

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