作者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