SQLAlchemy/MySQL 在查询期间丢失与 MySQL 服务器的连接

2024-01-07

SQLAlchemy (0.9.8) 和 mysql-5.6.21-osx10.8-x86_64 和 MAC OS X 10.3.3 (Yosemite)

我总是断断续续:

InterfaceError: (InterfaceError) 2013: Lost connection to MySQL server during query u'SELECT..... '

我已经阅读了一些线程,大多数情况都可以通过将其添加到 my.cnf 来解决

   max_allowed_packet = 1024M

对于我尝试做的事情来说应该足够大了。做完这件事后,我断断续续地踩着它。并将此行放入 /etc/my.cnf 中:

   log-error = "/Users/<myname>/tmp/mysql.err.log"
   log-warnings = 3

我希望获得更多详细信息,但我看到的只是这样:

   [Warning] Aborted connection 444 to db: 'dbname' user: 'root' host: 'localhost' (Got an error reading communication packets)

我已经达到了这样的程度,我认为更详细、更好的日志记录可能会有所帮助,或者如果在此之前我可以尝试其他方法。

Thanks.


看起来您的 MySQL 连接在长时间不活动后超时,我打赌如果您不断使用现有设置查询数据库,这种情况就不会发生。 MySQL 和 sql 端都有一些设置可以解决这个问题:

  1. 检查你的 SQL 引擎pool_recycle值,尝试不同/较小的值,例如1800(秒)。如果您正在从文件中读取数据库设置,请将其设置为

    池回收:1800

否则在引擎初始化期间指定它,例如

from sqlalchemy import create_engine
e = create_engine("mysql://user:pass@localhost/db", pool_recycle=1800)
  1. 检查/修改你的wait_timeoutMySQL 变量,请参见https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_wait_timeout https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_wait_timeout这是服务器在关闭非交互式连接之前等待该连接上的活动的秒数。例如

    显示全局变量,如“wait_timeout”;

找到适合您环境的组合。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQLAlchemy/MySQL 在查询期间丢失与 MySQL 服务器的连接 的相关文章

随机推荐