python访问mysql,MySQLdb可用。
在linux下,python要使用MySQLdb库,就需要编译。
从官网上的描述:MySQL-python-1.2.3支持MySQL 5.0,并不一定支持MySQL 5.5
同时MySQL-python-1.2.3也需要python2.7 至python3.0的环境。
当前环境是python2.6,MySQL 5.5.27,因为装了pyxmpp1.2,它要求是python2.6,故当前环境不与官方的一致。
MySQL-python-1.2.3编译过程中,需要编译一个__mysql.so的文件,而__mysql.so依赖libmysqlclient_r.so,编译时指定的库链接路径为/usr/lib,可以通过替换setup_posix.py中的library为
runtime_library_dirs,同时在/etc/ld.so.conf中添加已安装的MySQL 5.5.27的库目录。
虽然可以编译和安装通过,但是在import MySQLdb时,出现了__mysql.so 中的undefine symbol:mysql_debug。
解决这个问题的办法不是重新源码安装python2.7,从问题的本身来看是因为__mysql.so中没有找到mysql_debug的定义,可能是因为MySQL的库libmysqlclient_r.so中没有定义这个接口,查看libmysqlclient.so中是否有mysql_debug的定义。如果没有,又不想重新安装其他版本的Mysql或备份MySQL中的数据,则可以考虑下载一份与当前MySQL版本相同的源码,也就是MySQL 5.5.27,编译得到一份libmysqlclient_r.so,确认其中实现了mysql_debug接口,并重新编译MySQL-python-1.2.3。
最后可以成功导入MySQLdb并访问MySQL 5.5.27。
由此,可以发现,遇到问题,还是要从本身出发,找到蛛丝马迹,从而对症下药。而不是随意猜测,偏离正确方向。
阅读(1212) | 评论(0) | 转发(0) |