2009-08-19 42 views
7

Một đồng nghiệp nhận tin nhắn này lỗi khi cố gắng sử dụng MySQLdb từ Django:Django - MySQLdb: Symbol không tìm thấy: _mysql_affected_rows

[...] 
ImproperlyConfigured("Error loading MySQLdb module: %s" % e) django.core.exceptions.ImproperlyConfigured: 
Error loading MySQLdb module: dlopen(/Users/roy/.python-eggs/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg-tmp/_mysql.so, 2): 
Symbol not found: _mysql_affected_rows 
Referenced from: /Users/roy/.python-eggs/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg-tmp/_mysql.so Expected in: dynamic lookup 

Ông đang sử dụng OS X 10.5, Python 2.5 (đến với OS X), MySQL 5.1 & MySQLdb 1.2.3c1.

Bất kỳ ý tưởng nào về cách tấn công điều này?

Trả lời

0

Có, trứng MySQLDb được biên dịch dựa trên phiên bản libmysqlclient khác với phiên bản hiện tại trong hệ thống. Bạn cần hoặc là có được một quả trứng thích hợp (gỡ bỏ cài đặt trước đó) hoặc để xây dựng MySQLDb từ đầu để biên dịch nó với thư viện hiện diện trong hệ thống của bạn.

Tôi không biết tại sao nhưng tôi nghĩ rằng đồng nghiệp của bạn có thể quan tâm đến câu hỏi này:

Configuring Django to use remote mysql server?

6

Nó có thể là tốt nhất nếu bạn cài đặt mysql và nó bindings Python từ đầu, tôi sử dụng sau đây bước bất cứ khi nào tôi cần MySQLdb trên OS X 10.4 hoặc 10,5:

  1. Install MySQL cho hệ thống của bạn, trình cài đặt dmg nên là đủ

  2. Vị trí mặc định của MySQL sẽ ở đâu đó xung quanh: /usr/local/mysql-5.0.45-osx10.4-i686. Từ /usr/local/mysql/lib, tạo một liên kết mềm:

    ln -s ../../mysql-5.0.45-osx10.4-i686/lib mysql

  3. Tải MySQLdb source và giải nén nó

  4. Chỉnh sửa các tập tin site.cfg dưới thư mục MySQLdb giải nén của bạn, nhận xét ra các registry_key và thiết lập mysql_config tới:

    mysql_config = /usr/local/mysql-5.0.45-osx10.4-i686/bin/mysql_config

  5. Carry trên với các gói Python thường xuyên xây dựng từ bên trong thư mục MySQLdb:

    sudo python setup.py install

  6. Nếu mọi thứ đều tốt ở trên, kiểm tra MySQLdb tại một nhà ga mới:

    python -c "import MySQLdb"

Các ở trên sẽ không trả lại gì nếu thành công. Ví dụ trên cho thấy OS 10.4 và MySQL 5.0, thay thế chúng bằng phiên bản công cụ thích hợp của bạn.

+0

Không hoạt động trên 10.6 –

+0

Mysql 10.6 dmg chưa được xuất bản, sau khi được phát hành, hãy lắc lại. –

+1

Cảm ơn giải pháp này. Nó gần như đã hoạt động trên hệ thống của tôi (OSX 10.7). Tuy nhiên tôi cần thêm cờ ** - arch x86_64 ** vào cờ trình biên dịch và liên kết. Đây là cách tôi cần thay đổi ** setup_posix.py ** từ gói MySQLdb-python: trong phần 'ext_options' là build tôi đã thay đổi' extra_compile_args = extra_compile_args' thành 'extra_compile_args = extra_compile_args + ['-arch' , "x86_64"] 'và' extra_link_args = extra_link_args' vào 'extra_link_args = extra_link_args + ['-arch'," x86_64 "]' – spassig

0

Tôi gặp sự cố với giải pháp của Thierry về Python 32 bit (2.6.5) trên OS X 10.6.

Nâng cấp lên Python 2.7 Phiên bản 64 bit đã khắc phục sự cố cho tôi.

0

hướng dẫn Thiery của chỉ làm việc tốt cho tôi với MySQL 10,6 dmg và MySQLdb ver 1.2.3

Nó giúp để bắt đầu với một slate sạch, do đó hãy chắc chắn rằng bạn gỡ bỏ cài đặt các phiên bản đầu tiên của MySQL.Hãy xem bài đăng này để được gỡ cài đặt trợ giúp How do you uninstall MySQL from Mac OS X?

Cảm ơn!

1

Nó phức tạp và khó nhưng nó hoạt động trên MacOSX Lion.

bạn sẽ sử dụng:

Xcode 
Brew 
Port 
Pip 

hãy chắc chắn rằng bạn có Xcode (4.x) được cài đặt, và mac của bạn được cấu hình để tìm ra thực thi bởi vì nó sẽ được sử dụng bởi Macports trong suốt quá trình cài đặt mysql-python.

Hãy chắc chắn rằng Công cụ dòng lệnh Xcode được cài đặt

bắt đầu ứng dụng Xcode >> Preferences >> tải >> Linh kiện tab >> Command Line Tools >> bấm vào cài đặt

chạy các lệnh sau từ nhà ga .

xcodebuild -version

nếu bạn chạy vào lỗi này

/usr/bin/xcodebuild -version Error: No developer directory found at /Developer

cố gắng chạy

/usr/bin/xcode-select
này sẽ cập nhật đường dẫn thư mục nhà phát triển.

Sau đó, bạn cần phải chuyển đổi thủ công vào Xcode mới cài đặt dir trong/Applications:

sudo /usr/bin/xcode-select -switch /Applications/Xcode.app 

Ref

Uninstall mysql [Sao lưu dữ liệu trước khi bạn làm như vậy!].

sudo rm /usr/local/mysql 
sudo rm -rf /usr/local/mysql* 
sudo rm -rf /Library/StartupItems/MySQLCOM 
sudo rm -rf /Library/PreferencePanes/My* 
edit /etc/hostconfig and remove the line MYSQLCOM=-YES- 
sudo rm -rf /Library/Receipts/mysql* 
sudo rm -rf /Library/Receipts/MySQL* 
sudo rm -rf /var/db/receipts/com.mysql.* 

Sử dụng brew để cài đặt Mysql một lần nữa:

brew install mysql 

bạn có thể chạy vào lỗi này.

Error: Cannot write to /usr/local/Cellar 

các fix.

bạn sẽ sẵn sàng sử dụng ngay bây giờ.

sudo port install py27-mysql 

pip install mysql-python 

python -c "import MySQLdb" 

nếu bạn không thấy bất kỳ lỗi nào MySQLdb được cài đặt.

-1
sudo apt-get install python-mysqldb 

chắc chắn rằng nó nên được cài đặt đúng cách

hoặc bạn có thể sử dụng thay thế khác như easy_install

0

Cố gắng chạy:

easy_install -U distribute 
pip install --upgrade mysql-python 

Lưu ý: Nếu bạn có bất kỳ lỗi của thiếu biểu tượng trong khi biên dịch, bạn cần phải có libs phát triển mysql để biên dịch nó.

Trên Linux rất dễ dàng để cài đặt nó:

sudo apt-get install mysql-devel 

hay:

sudo yum install mysql-devel 

Trên Mac bạn có thể cần phải tải về MySQL Connector và sau đó bạn có thể phải vượt qua trong một --with-mysql -libs tùy chọn để trỏ đến thư mục khi các thư viện C được giải nén. Hoặc bạn có thể thử đặt các thư viện vào thư mục mặc định:/usr/lib64/mysql

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