我正在运行 MySQLdb v1.2.3 并收到以下错误:
LookupError: unknown encoding: utf8mb4
This answer建议将 MySQLdb 更新到版本 1.2.5。我更新了,现在收到这个错误:
ImportError: this is MySQLdb version (1, 2, 5, 'final', 1), but _mysql is version (1, 2, 3, 'final', 0)
我不确定如何着手更新 _mysql
或这将如何改变我的设置。这只是一个 python 模块还是以某种方式连接到我的 MySQL 服务器?
编辑:我试过运行以下三种方法:
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
卸载时我得到
/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 触及。
最佳答案
根据user manual :
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 的面向对象包装器。
This post解释了如何使用 pip 升级一个模块、一个模块及其所有依赖项或它们的任意组合。我认为,鉴于声明,MySQLdb 不依赖于 _mysql,并且它们没有一起升级。请访问共享的链接。
编辑: 经过一些挖掘,我发现 Ubuntu 不能很好地支持 MySQL,而且 pip 也不起作用。
所以我去了这个link并做了:
apt-get 安装 python-dev libmysqlclient-dev
做之前
sudo pip install MySQL-python
这对我来说效果很好。对于你,我认为你可能需要升级甚至 apt-get remove 然后重新安装上面的两个 Ubuntu 模块 python-dev
和 libmysqlclient-dev
。
对我来说,第一次安装时它就可以工作了;转到终端并输入 python 解释器,然后键入:
import MySQLdb
MySQLdb.__version__ #I got '1.2.5'
import _mysql
_mysql.__version__ #Again, I got '1.2.5'
关于python - MySQLdb 和 _mysql 版本不兼容 : how to upgrade _mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35853790/