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

标签 python mysql macos sqlalchemy

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 端都有一些设置可以解决这个问题:

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

    pool_recycle: 1800

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

from sqlalchemy import create_engine
e = create_engine("mysql://user:pass@localhost/db", pool_recycle=1800)
  1. 检查/修改您的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/

相关文章:

Python re.IGNORECASE 是动态的

python - 用于 Python 的 Docker SDK 未在我的 dockerized Django 应用程序中运行

python - 使用 pandas 的 if 语句抛出 "ValueError: The truth value of a Series is ambiguous"

mysql - 使用嵌套子查询和 GROUP BY 的 SQL 查询

java - 在每个单词后打印空格

mysql workbench 正向工程师不是一个选项

mysql - MYSQL表添加复合索引

macos - 关于 Cocoa 应用程序目录布局的文档?

c - 如何使用 C 语言制作带有单个 .out 文件的 Mac 应用程序?

macos - 如何使用 gcc 在 Mac OS X 中从多个 .o 构建 dylib