pyList

SAE OperationalError: (2006, 'MySQL server has gone away')错误的解决方法

SAE 的 Mysql 不支持长连接,只保持30秒,导致经常出现 MySQL server has gone away 错误提示。

MySQL server has gone away

OperationalError: (2006, 'MySQL server has gone away')

我使用 tornado.database 库连接, 以下是我尝试解决的过程

修改连接时间

首先尝试修改其连接函数的 max_idle_time 参数,如下:

mdb = database.Connection("%s:%s"%(MYSQL_HOST_M,MYSQL_PORT), MYSQL_DB,MYSQL_USER, MYSQL_PASS, max_idle_time = 30)

还是没有修正!再翻看 tornado.database 源码

使用 _ensure_connected 以确保连接

_ensure_connected 函数的功能是先判断是否还连着?如果没有连接或连接超时了才去重新连接。

但还是不行!!

只能用 reconnect 了

reconnect 函数是先关掉当前连接后再去重连,不知道这样强制去重新连接对包里的豆豆有没有影响。

现在好了,刷新了几次还没发现2006错误,如果你偶然发现麻烦回复一下:)

更新

_ensure_connected 在上面使用不了是因为 max_idle_time 设置问题,SAE 官方文档说SAE 的Mysql 最大能保持30秒,但在实际中远比30秒小,设置为5就能正常使用_ensure_connected 了。

参见 轻松搭建SAE Python 本地运行环境 1

本文标签: SAE away MySQL 2006 OperationalError
本文网址: https://pylist.com/t/1323241019 (转载注明出处)
如果你有任何建议或疑问可以在下面 留言
发表第一条评论!
验证码图片
相关推荐