Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1358846
  • 博文数量: 277
  • 博客积分: 2551
  • 博客等级: 少校
  • 技术积分: 3918
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-21 22:46
文章分类

全部博文(277)

文章存档

2017年(3)

2016年(9)

2015年(65)

2014年(27)

2013年(85)

2012年(61)

2011年(27)

分类: Python/Ruby

2012-12-14 22:09:08

   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。
  由此,可以发现,遇到问题,还是要从本身出发,找到蛛丝马迹,从而对症下药。而不是随意猜测,偏离正确方向。

 
  
阅读(1166) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~