【问题标题】:MySQL server has gone awayMySQL 服务器已消失
【发布时间】:2013-10-19 06:35:10
【问题描述】:

我一直在处理一个数据查询,它将使用给定的参数从表中选择一条记录。

它在本地主机中使用时运行良好,但在生产站点中上传和使用时会引发错误。

请看错误

exception 'CDbException' with message 'CDbCommand failed to execute the SQL
statement: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away.
The SQL statement executed was: SELECT id from MST_PERSON WHERE last_name =
'name' and first_name = 'name'  and middle_name = 'name'  and
birth_date = 'date' limit 1 '

我尝试增加 sql 的 wait_timeout 但没有运气。

提前致谢。

【问题讨论】:

  • 你检查了来自dev.mysql.com/doc/refman/5.0/en/gone-away.html的所有基本原因吗?
  • 检查您的提供商是否提供对您的错误日志的访问权限。如果是这样,请尝试查找此查询(或您在此查询之前执行的操作)生成的错误。
  • @Enrico 您是否在循环中淹没 MySQL 数据库?这也可能出于某种原因看起来像它,因为超出限制 1.. 向我们展示了一个表结构并解释了查询..

标签: php mysql sql


【解决方案1】:

编辑您的my.cnf.. 如果是 linux,您需要使用:vim /etc/mysql/my.cnf

添加:

max_allowed_packet=500M

restart mysql

【讨论】:

  • 他选择了具有单个 id 的单行。 max_allow_packet 怎么可能超过? :)
  • 常见问题:如果您的 my.cnf 文件包含默认设置,则 max_allowed_pa​​cket 可能会在文件中重新定义,将您的新值覆盖回默认值。
【解决方案2】:

我在谷歌看到了这个问题,它说 更改 my.cnf wait_timeout=28800

http://dev.mysql.com/doc/refman/5.1/en/gone-away.html

【讨论】:

  • 更改 wait_timeout 不是一个好的解决方案。如果连接超时,他需要了解发生这种情况的原因。但我们甚至不知道连接是否超时。
  • 你是对的,谢谢你的建议:),所有服务器消失的原因都在我的链接中,也许@Enrico会检查一下:)
猜你喜欢
  • 1970-01-01
  • 2012-05-25
  • 2011-06-07
  • 2010-12-20
  • 2013-06-13
  • 2015-01-15
  • 2016-03-06
  • 2017-04-02
相关资源
最近更新 更多