You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安装MySQL-python后运行Django项目报错:MySQLdb与_mysql版本不匹配

解决MySQLdb与_mysql版本不匹配的问题

这坑我之前踩过!本质是你的Python环境里混了新旧两个版本的MySQL相关库:虽然pip freeze显示MySQL-python==1.2.5(也就是上层的MySQLdb是1.2.5),但底层的_mysql C扩展模块还是旧的1.2.3版本,导致Django加载时版本校验失败。下面是几个亲测有效的解决步骤:

步骤1:彻底卸载并清理旧库

首先完全移除已安装的MySQL-python,同时手动清理残留的底层_mysql文件:

  • 执行卸载命令:
    pip uninstall -y MySQL-python
    
  • 找到_mysql模块的位置并删除:
    如果还能导入_mysql,可以用以下命令直接定位路径:
    python -c "import os; import _mysql; print(os.path.abspath(_mysql.__file__))"
    
    然后删除输出的文件(比如Linux/macOS下是_mysql.so,Windows下是_mysql.pyd)。如果导入失败,就去你的Python环境的site-packages目录里手动找这个文件删掉。

步骤2:清理pip缓存后重新安装指定版本

pip缓存可能保留了旧版本的安装包,导致重新安装时还是用旧的底层文件:

  • 清理pip全局缓存:
    pip cache purge
    
  • 重新安装1.2.5版本:
    pip install MySQL-python==1.2.5
    

步骤3:检查虚拟环境(如果使用了的话)

如果你的项目用了虚拟环境,务必确认当前激活的是正确的环境:

  • 用以下命令确认当前Python路径:
    # Linux/macOS
    which python
    # Windows
    where python
    
  • 再执行pip freeze,确保这个环境里的MySQL-python确实是1.2.5版本,没有被全局环境的旧库干扰。

备选方案:换用维护更活跃的mysqlclient

MySQL-python已经多年没更新了,兼容性问题较多。Django官方现在推荐使用mysqlclient(它是MySQL-python的分支,完全兼容Django的MySQL引擎):

  • 卸载旧的MySQL-python后,安装mysqlclient:
    pip install mysqlclient
    
  • 无需修改Django的数据库配置(DATABASES里的ENGINE还是'django.db.backends.mysql'),直接重启项目即可。

内容的提问来源于stack exchange,提问作者Saurabh Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:54:58