I'm trying to write a Python program that manipulates a MySQL database
and have chosen to use MySQLdb. So, I used by system's package manager,
YUM, and it appeared to install correctly. So, I tried it out and got this
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "MySQLdb/__init__.py", line 22, in ?
raise ImportError, "this is MySQLdb version %s, but _mysql is version
ImportError: this is MySQLdb version (1, 2, 2, 'final', 0), but _mysql is
version (1, 2, 1, 'final', 1)
It looks like the MySQLdb version doesn't match the _mysql version. If
these were two different libraries, I might understand how this error
happened. However, they're part of the same library. _mysql is just a
Python binding to the MySQL C API and MySQLdb is just a Python wrapper
around _mysql to be compliant with the Python DB specification. They were
both part of the same library so how did their versions fall out of sync?
That's like getting a Windows application with incompatible DLLs!
So, my bad hack of a fix is to copy the MySQLdb python code to a local
directory (where my python program will eventually reside) and, on this
local copy, comment out the version check. The idea is that MySQLdb is pure
Python, so it's unlikely that there is any incompatibility between it and
the very thin layer that is _mysql. The local copy is so I don't forget
that I'm using a modified version of this library. Python seems to import
this over the global one. I've done a bit of testing and, so far, it
appears to work!
What is my problem? A google search reveals that I'm not the only
person with this problem but it also reveals that absolutely no one knows
how to fix this. What are the chances that my fix will backfire? Thank