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?
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:
Install MySQL for your system, the dmg installer should be sufficient
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
Download the MySQLdb source and unpack it
Edit the file
site.cfg
under your unpacked MySQLdb directory, comment out theregistry_key
and setmysql_config
to:mysql_config = /usr/local/mysql-5.0.45-osx10.4-i686/bin/mysql_config
Carry on with the regular Python packages build from within MySQLdb directory:
sudo python setup.py install
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.
make sure it should installed properly
or you can use another alternative like
easy_install
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?
It was Complicated and hard but it worked on MacOSX Lion.
you will be using :
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:
Ref
Uninstall mysql [Backup you data before doing so !].
Use brew to install Mysql again:
you might run into this error.
the fix.
you should be ready to go now.
if you don't see any errors MySQLdb is installed.
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.
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!