关于python:MySQLdb和mysql版本不兼容:如何升级mysql

MySQLdb and _mysql versions ncompatible: how to upgrade _mysql

我正在运行MySQLdb v1.2.3并收到以下错误:

1
LookupError: unknown encoding: utf8mb4

这个答案建议将MySQLdb更新为1.2.5版。 我更新了,现在收到此错误:

1
ImportError: this is MySQLdb version (1, 2, 5, 'final', 1), but _mysql is version (1, 2, 3, 'final', 0)

我不知道如何更新_mysql或如何更改我的设置。 这只是一个python模块还是以某种方式连接到我的MySQL服务器?

编辑:我已经尝试运行以下三种方法:

1
2
3
4
5
6
7
sudo pip uninstall mysql-python
sudo pip install mysql-python

sudo pip uninstall mysql-python
sudo pip install mysql-python==1.2.5

sudo pip install mysql-python --upgrade

卸载时我得到了

1
2
3
4
5
/usr/local/lib/python2.7/dist-packages/_mysql.so
/usr/local/lib/python2.7/dist-packages/_mysql_exceptions.py
/usr/local/lib/python2.7/dist-packages/_mysql_exceptions.pyc
Proceed (y/n)? y
Successfully uninstalled MySQL-python-1.2.3

之后,我无法导入MySQLdb_mysql,但重新安装总是给我_mysql版本1.2.3。

第二次编辑/解决方案:结果_mysql安装在服务器上的两个不同位置。 如上所述,卸载/安装将_mysql升级到v1.2.5,但每当我导入MySQLdb时,优先权被赋予其他版本的_mysql,而pip没有触及。


根据用户手册:

If you want to write applications which are portable across databases, use MySQLdb, and avoid using this module directly. _mysql provides an interface which mostly implements the MySQL C API. For more information, see the MySQL documentation. The documentation for this module is intentionally weak because you probably should use the higher-level MySQLdb module.

基本上,_mysql是MySQL C API的面向对象的包装器。

这篇文章解释了如何使用pip升级一个模块,一个具有所有依赖关系的模块,或者它的任意组合。 我认为,鉴于声明,MySQLdb没有依赖于_mysql,并且它们没有一起升级。 请访问分享的链接。

编辑:经过一番挖掘,我发现Ubuntu不能很好地支持MySQL,只是pip不起作用。

所以我去了这个链接做了:

apt-get install python-dev libmysqlclient-dev

在做之前

sudo pip install MySQL-python

这对我很有用。 对于您,我认为您可能需要升级甚至apt-get删除,然后重新安装上述两个Ubuntu模块python-devlibmysqlclient-dev

对我来说,这是第一次安装时的工作; 转到终端并输入python解释器,然后键入:

1
2
3
4
import MySQLdb
MySQLdb.__version__    #I got '1.2.5'
import _mysql
_mysql.__version__    #Again, I got '1.2.5'