2016-03-07 21 views
5

Tôi đang chạy MySQLdb v1.2.3 và nhận được lỗi sau:MySQLdb và _mysql phiên bản ncompatible: làm thế nào để nâng cấp _mysql

LookupError: unknown encoding: utf8mb4 

This answer gợi ý cập nhật MySQLdb lên phiên bản 1.2.5. Tôi đã cập nhật và hiện đang gặp phải lỗi này:

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

Tôi không biết cách cập nhật _mysql hoặc cách điều này sẽ thay đổi thiết lập của tôi. Đây có phải chỉ là một mô-đun python hoặc nó được kết nối một cách nào đó đến máy chủ MySQL của tôi?

EDIT: Tôi đã thử chạy trong ba phương pháp sau:

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 

Khi gỡ bỏ cài đặt tôi nhận được

/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 

Sau đó tôi không thể nhập khẩu hoặc MySQLdb hoặc _mysql nhưng cài đặt lại luôn cho tôi _mysql phiên bản 1.2.3.

CHỈNH SỬA SECOND/GIẢI PHÁP: Đã tắt _mysql được cài đặt ở hai vị trí khác nhau trên máy chủ. Gỡ cài đặt/cài đặt, như trên, đã nâng cấp _mysql thành v1.2.5 nhưng bất cứ khi nào tôi nhập ưu tiên MySQLdb được ưu tiên cho phiên bản khác của _mysql không bị pip chạm vào.

+0

trông tương tự như câu hỏi http://stackoverflow.com/a/27138539/2253302 –

+0

@alexander.polomodov trông tương tự, nhưng ngược lại câu hỏi. Câu hỏi đó cập nhật MySQLdb để phù hợp với '_mysql', tôi đang cố gắng cập nhật' _mysql' để khớp 'MySQLdb' (vì tôi cần một phiên bản cụ thể của' MySQLdb'). Có một loạt các câu hỏi tương tự với câu hỏi bạn đã đăng, nhưng không có câu hỏi nào ngược lại. Cũng lưu ý rằng một số nhận xét trong liên kết đó cũng yêu cầu trợ giúp ngược lại. – Sal

+0

Vì vậy, câu hỏi sẽ được chuyển thành "Làm cách nào để nâng cấp MySQLdb?" –

Trả lời

1

Theo 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.

Về cơ bản, _mysql là một wrapper hướng đối tượng cho API MySQL C.

This post giải thích cách sử dụng pip để nâng cấp một mô-đun, một mô-đun với tất cả các phụ thuộc của nó hoặc bất kỳ kết hợp nào của chúng. Tôi nghĩ rằng, với tuyên bố, MySQLdb không có sự phụ thuộc vào _mysql, và chúng không được nâng cấp cùng nhau. Vui lòng truy cập liên kết được chia sẻ.

EDIT: Sau một số lần đào, tôi thấy rằng Ubuntu không hỗ trợ MySQL độc đáo và chỉ pip không hoạt động.

Vì vậy, tôi đã đi đến link này và đã làm:

apt-get install python-dev libmysqlclient-dev

trước khi làm

sudo pip install MySQL-python

này làm việc độc đáo cho tôi. Đối với bạn, tôi nghĩ bạn có thể cần phải nâng cấp hoặc thậm chí apt-get loại bỏ và sau đó cài đặt lại hai mô-đun Ubuntu trên python-devlibmysqlclient-dev.

Đối với tôi, tính năng này hiện đang hoạt động khi cài đặt lần đầu tiên; chuyển sang terminal và nhập thông dịch viên trăn, sau đó gõ:

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

Tôi đã thử chạy '--upgrade' và tôi đã thử gỡ cài đặt và cài đặt lại. Luôn luôn MySQLdb 1.2.5 và _mysql 1.2.3. Xem chỉnh sửa trong bài đăng gốc. – Sal

+0

Được rồi, tôi nghĩ tôi đã có giải pháp. Xin vui lòng xem câu trả lời của tôi. –

+0

Đây là những gì tôi đang lo lắng, đi xuống một dòng dài phụ thuộc. Tôi do dự để cài đặt lại cả hai 'python-dev' và' libmysqlclient-dev'. Gỡ cài đặt 'MySQLdb' uninstalls' _mysql', tương tự, cài đặt 'MySQLdb' cài đặt' _mysql', làm cho tôi nghĩ rằng nó độc lập với hai gói bạn đã đề cập. Tôi có thể cài đặt bất kỳ phiên bản 'MySQLdb' nào nhưng vì một lý do nào đó tôi luôn nhận được phiên bản v1.2.3 của' _mysql'. – Sal

Các vấn đề liên quan