Django - MySQLdb: Symbol not found: _mysql_affecte

2020-01-31 11:19发布

A colleague got this error message when trying to use MySQLdb from Django:

[...]
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

He's using OS X 10.5, Python 2.5 (arriving with OS X), MySQL 5.1 & MySQLdb 1.2.3c1.

Any idea how to attack this?

7条回答
够拽才男人
2楼-- · 2020-01-31 11:27

It might be best if you install mysql and it's Python bindings from scratch, I use the following steps whenever I need MySQLdb on OS X 10.4 or 10.5:

  1. Install MySQL for your system, the dmg installer should be sufficient

  2. The default location of MySQL will be somewhere around: /usr/local/mysql-5.0.45-osx10.4-i686. From /usr/local/mysql/lib, create a soft link:

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

  3. Download the MySQLdb source and unpack it

  4. Edit the file site.cfg under your unpacked MySQLdb directory, comment out the registry_key and set mysql_config to:

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

  5. Carry on with the regular Python packages build from within MySQLdb directory:

    sudo python setup.py install

  6. If everything is fine above, test MySQLdb in a new terminal:

    python -c "import MySQLdb"

The above should return nothing if successful. The above example shows OS 10.4 and MySQL 5.0, substitute them with the your proper tools version.

查看更多
Ridiculous、
3楼-- · 2020-01-31 11:28
sudo apt-get install python-mysqldb

make sure it should installed properly

or you can use another alternative like easy_install

查看更多
Melony?
4楼-- · 2020-01-31 11:32

Yes, the MySQLDb egg was compiled against a different version of libmysqlclient than the version present in the system. You need to either get a proper egg (uninstalling the previous) or to build MySQLDb from scratch to compile it against the library present in your system.

I don't know why but I think your colleague might be interested in this question:

Configuring Django to use remote mysql server?

查看更多
倾城 Initia
5楼-- · 2020-01-31 11:35

It was Complicated and hard but it worked on MacOSX Lion.

you will be using :

Xcode
Brew
Port
Pip

make sure that you have Xcode(4.X) installed , and your mac is configured to find the executables because it will be used by Macports during the process of installing mysql-python.

Make sure that Xcode Command line Tools are installed

start Xcode app >> preferences >> download >> Components tab >> Command Line Tools >> click install

run the following commands from the terminal.

xcodebuild -version

if you ran into this error

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

Try to Run

/usr/bin/xcode-select
this will update the developer directory path.

Then you need to switch manually to the new Xcode install dir in /Applications:

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

Ref

Uninstall mysql [Backup you data before doing so !].

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

Use brew to install Mysql again:

brew install mysql

you might run into this error.

Error: Cannot write to /usr/local/Cellar

the fix.

you should be ready to go now.

sudo port install py27-mysql

pip install mysql-python

python -c "import MySQLdb"

if you don't see any errors MySQLdb is installed.

查看更多
手持菜刀,她持情操
6楼-- · 2020-01-31 11:35

I had trouble with Thierry's solution on 32-bit Python (2.6.5) on OS X 10.6.

Upgrading to Python 2.7 64-bit version fixed the problem for me.

查看更多
我欲成王,谁敢阻挡
7楼-- · 2020-01-31 11:37

Thiery's instructions worked just fine for me with the MySQL 10.6 dmg and MySQLdb ver 1.2.3

It helps to start with a clean slate, so make sure you uninstall early versions of MySQL. Look at this post for uninstallation help How do you uninstall MySQL from Mac OS X?

Thanks!

查看更多
登录 后发表回答