Django2.x连接MySQL8.x的错误解析

MySQL8.0的默认认证加密方式和之前版本不同,为了兼容,设置default_authentication_plugin=mysql_native_password

,若不设置,后面会报错。

如果使用的是Django2.x以及MySQL8.x,那么很大机率会出现执行数据迁移指令后,会报错(django.db.utils.OperationalError: (2059, <NULL>)).

此错误原因是MySQL8.x采用了新的加密方式( MySQL8.0默认认证加密方式为caching_sha2_password),但Django2.x并不识别此种加密,导致无法连接到数据库。

解决方法1:修改MySQL8.x密码加密方式,改成mysql_native_password

# 选择要操作的库
USE ‘你的数据库名’;
# 修改密码加密方式
ALTER USER '你的账号'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的账号密码';
# 刷新数据库
FLUSH PRIVILEGES;

然后进行数据库迁移,便解决问题:

python manage.py makemigrations # 生成迁移
python manage.py migrate # 执行迁移

 

posted on 2019-04-14 23:39  xufat  阅读(223)  评论(0编辑  收藏  举报

导航

/* 返回顶部代码 */ TOP