作者AndCycle (AndCycle)
看板Database
标题Re: [系统] 请问一下MySQL和python的连接关系
时间Mon Nov 16 03:29:29 2009
※ 引述《chigi ()》之铭言:
: 这个问题是从
: OperationalError: (2006, 'MySQL server has gone away')
: 来的,
: 我把错误讯息拿进google去查了一下,
: 说大部分都是因为timeout之後,connect就挂了,而新版的MySQL的某个flag预设为0
: 详见http://mclee.foolme.net/2007/01/mysql-server-has-gone-away.html
: 我的问题在於,对於Python的MySQL套件(MySQLdb, build on py2.5)
: 只能使用 MySQLdb.connect(host, ..) 做连接,
: 那mysql_real_connect又是怎麽使用呢?
你需要看两份文件, 而且建议你找文件首先从英文下手,
第一份是
http://dev.mysql.com/doc/refman/5.0/en/mysql-real-connect.html
这是MySQL官方对於mysql_real_connect的使用方式说明,
最下面就有指出你找到的问题,
而且他也有建议你怎麽改,
As of MySQL 5.0.13, you can use the MYSQL_OPT_RECONNECT option to
mysql_options() to control reconnection behavior.
第二份是
http://mysql-python.sourceforge.net/MySQLdb.html
这是MySQL-Python的使用者手册,
里面就有提到MySQL的API跟Python函式名称上的互相关系,
不过看了半天发现怎麽没有提到reconnect这件事?
於是开了google "MYSQL_OPT_RECONNECT python"
第一笔是个漏漏长的网址,
http://sourceforge.net/tracker/index.php?aid=1483074&group_id=22307&atid=374934
内文是有人针对这个问题在2008年底开了一个收patch要求,
但是MySQL-Python的作者adustman第一句回的话就是这patch我不收,
因为他认为自动重新连线这回事有很多潜在的问题,
MySQL官方把这个预设值改成不自动重连也有原因,
所以他麻烦你认真的定时去保持连线,
也就是用 connection.ping() 定期去敲 mysql 说你还活着
--
爱情, 是猫与蝴蝶的嬉戏
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.40.15
1F:推 chigi:感谢推! 话说google py和MySQL_real_connect我还真的没想到. 11/16 12:20
2F:推 chigi:最後.. 结果是因为送入了过长的SQL导致database crash 11/16 14:39