Mysql2 错误 MySQL 服务器已消失
Posted
技术标签:
【中文标题】Mysql2 错误 MySQL 服务器已消失【英文标题】:Mysql2 Error MySQL server has gone away 【发布时间】:2011-10-12 00:42:49 【问题描述】:我偶尔会收到此错误。我在 *** 中阅读了一些解决方案,但它们是关于 rails 2 或 mysql 的。任何帮助将不胜感激。
ActiveRecord::StatementInvalid (Mysql2::Error: MySQL server has gone away
【问题讨论】:
消息“MySQL 服务器已消失”是否告诉您任何信息?遇到此错误(phpMyAdmnin,控制台)时,您是否尝试过连接到您的 MySQL 服务器? 当我刷新页面时它可以工作。 此错误发生在随机页面上还是在某个特定位置?也许是一些无效的查询有问题? 您使用的是共享主机还是私人服务器? 应用在我们,数据库服务器在欧洲 【参考方案1】:我在尝试通过调用一个语句通过seeds.rb
和rake db:seed
导入大文件时遇到此错误:
ActiveRecord::Base.connection.execute(IO.read("path/to/file.sql"))
我不断收到ActiveRecord::StatementInvalid (Mysql2::Error: MySQL server has gone away...
解决方案
我通过两件事的结合解决了这个问题:
-
将
reconnect: true
添加到database.yml
中的数据库规范
读取SQL文件并单独执行语句,如下:
f = File.new('path/to/file.sql')
while statements = f.gets("") do
ActiveRecord::Base.connection.execute(statements)
end
我不得不修改以从我的 SQL 文件中删除一些 cmets —— 它们使 ActiveRecord 出于某种原因抛出错误,但这解决了我的问题。
【讨论】:
哦,为了表扬,我改编了这篇博文中的解决方案代码(第 2 步):nathan.seedoftruth.net/post/15237050763/…【参考方案2】:当我在开发环境中运行“rake db:reset”命令时,我遇到了完全相同的问题。但是当我运行“rake db:migrate:reset && rake db:seed”时,我从未看到此错误消息。
虽然很奇怪,但这可能会对这个问题有所启发。如果我的帖子能以某种方式找到解决方案,我会很高兴。
【讨论】:
我在运行rake db:reset
时遇到了同样的问题。在异常的源代码行之前放置一个ActiveRecord::Base.connection.reconnect!
来修复它。【参考方案3】:
导致错误的原因有很多。请参阅下页了解可能的原因。也许您的数据包大小设置得太小了。
http://dev.mysql.com/doc/refman/5.0/en/gone-away.html
【讨论】:
【参考方案4】:也许您托管的服务器过载,在某些情况下 MySQL 服务器无法执行查询。向您的托管服务提供商询问性能监控工具,或直接告诉他这个问题。这个错误信息应该足以让他们给你一个答案。
【讨论】:
以上是关于Mysql2 错误 MySQL 服务器已消失的主要内容,如果未能解决你的问题,请参考以下文章