Как использовать 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
.
Что на самом деле представляет собой 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_
)