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)
我已经到了一个地步,我认为更多细节更好的日志记录可能会有所帮助,或者如果有其他我可以在此之前尝试的东西。
谢谢。
最佳答案
看起来您的 MySQL 连接在长时间不活动后超时,我敢打赌,如果您不断地使用现有设置查询数据库,则不会发生这种情况。 MySQL 和 sql 端都有一些设置可以解决这个问题:
检查您的 SQLa 引擎的
pool_recycle
值,尝试不同的/较小的值,例如1800(秒)。如果您正在从文件中读取数据库设置,请将其设置为pool_recycle: 1800
否则在引擎初始化期间指定它,例如
from sqlalchemy import create_engine
e = create_engine("mysql://user:pass@localhost/db", pool_recycle=1800)
检查/修改您的
wait_timeout
MySQL 变量,参见https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_wait_timeout这是服务器在关闭非交互式连接之前等待事件的秒数。例如显示全局变量,如“wait_timeout”;
找到适合您环境的组合。
关于python - SQLAlchemy/MySQL 在查询期间丢失与 MySQL 服务器的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29755228/