2016-03-07 26 views
5

我運行MySQLdb的V1.2.3並得到以下錯誤:MySQLdb的和_mysql版本ncompatible:如何升級_mysql

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。

SECOND EDIT/SOLUTION:原來_mysql安裝在服務器的兩個不同位置。如上所述,卸載/安裝將_mysql升級到v1.2.5,但每當我隨後導入MySQLdb時,優先級都會被賦予_mysql的其他版本,但未被pip觸及。

+0

類似於質疑http://stackoverflow.com/a/27138539/2253302 –

+0

@alexander。polomodov看起來相似,但相反的問題。該問題更新MySQLdb以匹配'_mysql',我試圖更新'_mysql'來匹配'MySQLdb'(因爲我需要特定版本的'MySQLdb')。你發佈的問題有一堆類似的問題,但沒有一個能夠解決你的問題。另外請注意,該鏈接中的一些評論也要求相反的幫助。 – Sal

+0

所以,這個問題歸結爲「如何升級MySQLdb?」 –

回答

1

按照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 install python-dev libmysqlclient-dev

sudo pip install MySQL-python

這很好地爲我工作了。對於你,我認爲你可能需要升級甚至apt-get remove,然後重新安裝上述兩個Ubuntu模塊python-devlibmysqlclient-dev

對於我來說,它是第一次安裝時的工作;去一個終端,輸入Python解釋器,然後輸入:

import MySQLdb 
MySQLdb.__version__ #I got '1.2.5' 
import _mysql 
_myql.__version__ #Again, I got '1.2.5' 
+0

我試過運行'--upgrade',我試過卸載並重新安裝。總是MySQLdb 1.2.5和_mysql 1.2.3。請參閱原始帖子中的修改。 – Sal

+0

好吧,我想我已經得到了解決方案。請看我的答案。 –

+0

這就是我所擔心的,沿着長長的依賴關係。我很猶豫重新安裝'python-dev'和'libmysqlclient-dev'。卸載'MySQLdb'會卸載'_mysql',類似地,安裝'MySQLdb'會安裝'_mysql',這使我認爲它獨立於你提到的兩個包。我可以安裝任何版本的'MySQLdb',但出於某種原因,我總是獲得'_mysql'的v1.2.3。 – Sal