使用WAMP Server连接Django与MySQL时遇Django.db.utils.NotSupportedError
Django连接WAMP MySQL触发NotSupportedError的解决方案
1. 排查MySQL与Django版本兼容性
- 查看WAMP中MySQL版本:打开MySQL控制台执行
SELECT VERSION(); - 核对版本匹配规则:
- Django 3.2 支持 MySQL 5.7+ / 8.0
- Django 4.x 要求 MySQL 5.7.8+ / 8.0
- 旧版Django(如2.x)不兼容MySQL 8.0默认的
caching_sha2_password认证插件,这是常见触发NotSupportedError的原因
2. 修改MySQL用户认证插件
若MySQL版本为8.0+,需将数据库用户的认证方式改为Django支持的mysql_native_password:
- 登录MySQL控制台:
mysql -u root -p(WAMP默认root密码为空,直接回车) - 查看当前用户认证插件:
SELECT user, host, plugin FROM mysql.user WHERE user='你的Django数据库用户名'; - 切换认证插件:
ALTER USER '你的用户名'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的数据库密码'; FLUSH PRIVILEGES;
3. 检查DATABASE配置(settings.py)
确保配置项正确无误,示例:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '你的数据库名', 'USER': '数据库用户名', 'PASSWORD': '数据库密码', 'HOST': 'localhost', 'PORT': '3306', 'OPTIONS': { 'charset': 'utf8mb4', }, } }
- 必须使用官方引擎
django.db.backends.mysql,避免第三方引擎引发兼容问题 - 确认WAMP的MySQL端口为默认的3306,HOST设为
localhost
4. 安装正确的数据库驱动
卸载可能冲突的驱动(如pymysql),安装官方推荐的mysqlclient:
pip uninstall pymysql pip install mysqlclient
- Windows环境下若
mysqlclient安装失败,可下载对应Python版本的预编译.whl文件本地安装
5. 验证连接
执行Django迁移命令测试连接:
python manage.py migrate
若仍报错,查看终端输出的详细错误栈,定位是否为数据库字符集不兼容、SQL特性不支持等问题
内容的提问来源于stack exchange,提问作者Ashok_dev_27
相关产品推荐
相关产品推荐

