关于" MySQL server has gone away"的问题
2015-04-07 16:26
369 查看
写了一个python程序,采用阻塞方式获取redis队列信息,这个队列信息可能好几天才会有新的队列信息put到队列中。在获取到队列信息后,会将获取到的队列信息通过MySQLdb模块写入MySQL数据库中。如果长时间没有队列中没有信息的话,比如1天以上,在1天之后,有队列信息抵达redis队列,并将新的队列get出来,接着写入MySQL数据库时,会报“ MySQL server has gone away”,开始还以为是MySQL有问题,后来发现原来不是。一般这种情况,有的是通过设置“wait_timeout”,将wait_timeout值设置很大,wait_timeout 默认是10.但是我们线上的MySQL的wait_timeout设置为86400,已经是很大了。在stackoverflow.com 上看到一个解析办法,示例代码如下:
我在代码的也加入了一段类似的功能,在执行真正的SQL操作前,先执行一个SELECT 语句,然后再执行真正的SQL操作。
本文出自 “简单就是美的博客” 博客,转载请与作者联系!
import MySQLdbclass DB: conn = None def connect(self): self.conn = MySQLdb.connect() def query(self, sql): try: cursor = self.conn.cursor() cursor.execute(sql) except (AttributeError, MySQLdb.OperationalError): self.connect() cursor = self.conn.cursor() cursor.execute(sql) return cursor db = DB()sql = "SELECT * FROM foo"cur = db.query(sql)# wait a long time for the Mysql connection to timeoutcur = db.query(sql)# still works大概的意思就是在异常之后,再执行一次select操作,这或许也是一个办法吧。
我在代码的也加入了一段类似的功能,在执行真正的SQL操作前,先执行一个SELECT 语句,然后再执行真正的SQL操作。
本文出自 “简单就是美的博客” 博客,转载请与作者联系!
相关文章推荐
- 关于"[MYSQL ERROR(2006):MySQL server has gone away]"的解决方法
- 关于不正常地定义参数对象。提供了不一致或不完整的信息或者MySQL server has gone away的问题总结
- 关于mysql数据库在运行中出现MySQL server has gone away的问题解决
- MySQL server has gone away 问题的解决方法
- MySQL的server has gone away问题…
- MySQL 报错 server has gone away 问题解决方法
- MySQL server has gone away问题解决方法
- 解决MySQL server has gone away问题的两种有效办法
- 导入SQL导致"MySQL server has gone away"的解决方法
- 遇到的问题---------mysql插入数据时MySQL server has gone away
- 关于一次导入数据提示的MySQL server has gone away
- 关于Error making query:MySQL server has gone away
- MySQL server has gone away问题解决方法
- 解决MySQL server has gone away的问题
- MySQL server has gone away 问题的解决方法
- #2006 - MySQL server has gone away 问题解决方法
- #2006 - MySQL server has gone away 问题解决方法 (全) (转)
- #2006 - MySQL server has gone away 问题解决方法
- #2006 - MySQL server has gone away 问题解决方法