Я хочу настроить свой проект django, чтобы связать его с базой данных в MYSQL Я создал с верстаком 8.0 ,
и затем хочу запустить сервер, запустив
python manage.py runserver
из командной строки anaconda,
, чтобы я мог использовать интерфейс Django для визуализации и изменения данных.
Обратите внимание, что я не хочу понижать верстак 8.0.
Это шаги, которые я сделал:
Из приглашения Anaconda:
pip install mysqlclient
В папке моего проекта в settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'schema_meta',
'USER': 'root',
'PASSWORD': '<mypassword>',
'HOST': '127.0.0.1',
'PORT': '3306',
},
}
Внутри каталога сервера MySQL я открываю cnf.ini и вставляю секцию [client]:
[client]
database=schema_meta
host=127.0.0.1
user=root
password=<mypassword>
port=3306
default-character-set = utf8
Затем из командной строки anaconda запускаю
Python manage.py runserver
И получаю ошибку
django.db.utils.OperationalError: (2059, «Плагин аутентификации 'caching_sha2_password' не может быть загружен: невозможно выполнить по модулю специфика. \ R \ n")
Поэтому я пытаюсь решить эту проблему следующим образом:
django.db.utils.operationalError: (2059, «Плагин аутентификации 'caching_sha2_password'»)
Я открываю инструмент MySQLи я запускаю этот запрос:
delete from mysql.user
where user='root'
and host = '127.0.0.1';
flush privileges;
CREATE USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY '<mypassword>';
И затем в файле my.ini я изменяю
default-authentication-plugin= caching_sha2_password
на
default-authentication-plugin=mysql_native_password
Наконец, из приглашения anaconda:
python manage.py runserver
Но снова я получаю
django.db.utils.OperationalError: (2059, «Плагин аутентификации» caching_sha2_password 'не может быть загружено: невозможно выполнить по модулю. \ r \ n ")
Теперь, что не так?Почему он не получил изменения в методе аутентификации?
Чтобы проверить, что нет других ошибок, из mysql workbench, из первого «домашнего» представления, я щелкаю правой кнопкой мыши по своей базе данных и открываю «редактировать соединение », я нажимаю« проверить соединение », и программа сообщает, что соединение установлено успешно.
mysql workbench говорит, что соединение успешно установлено
Более того, я хотелчтобы проверить, была ли проблема в моих настройках Django.Поэтому из приглашения anaconda я запускаю
pip install pymysql
Затем в папках проекта я создал скрипт «connect_to_mysql.py» со следующим кодом внутри:
import pymysql.cursors
mydb = pymysql.connect(host='127.0.0.1',
user='root',
password='<mypassword>',
db='schema_meta',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
print(mydb)
, и это, похоже, работаетхорошо, так как, когда я запускаю
connect_to_mysql.py
от Anaconda, я получаю
pymysql.connections.Connection объект в 0x000002013F2851D0
Это я думаюозначает «соединение успешно установлено».
И чтобы быть уверенным, что проблема связана с mysql (думаю, коннектор mysql), я создаю файл «connect_to_mysql_2.py» с таким кодом внутри:
import mysql.connector
mydb = mysql.connector.connect(user='root', password='<mypassword>',
host='127.0.0.1', database='meta_schema')
print(mydb)
И когда я запускаю его из anaconda, я снова получаю
"Плагин аутентификации '{0}' не поддерживается" .format (plugin_name)) mysql.connector.errors.NotSupportedError: Плагин аутентификации "caching_sha2_password 'не поддерживается
Это означает, что я ничего не исправил, работая над верстаком mysql и в файле my.ini.
Как мне подключить мой Django к моей базе данных mysql и запустить мой сервер?
Есть ли способ установить соединитель сервера, используя соединитель pymysql вместо этого соединителя mysql?