Mysql2错误MySQL服务器已经消失

ziC*_*iCk 12 mysql2 ruby-on-rails-3

我偶尔会收到这个错误.我已经在stackoverflow中阅读了一些解决方案,但它们是关于rails 2或mysql的.任何帮助将不胜感激.

ActiveRecord::StatementInvalid (Mysql2::Error: MySQL server has gone away
Run Code Online (Sandbox Code Playgroud)

Ray*_*Fix 6

导致错误的原因很多.有关可能的原因,请参见下页.也许您的数据包大小设置得太小.

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


Yuv*_*rmi 5

seeds.rb我在尝试通过rake db:seed调用一个语句来导入大文件时遇到此错误:

ActiveRecord::Base.connection.execute(IO.read("path/to/file.sql"))
Run Code Online (Sandbox Code Playgroud)

我不断地得到ActiveRecord::StatementInvalid (Mysql2::Error: MySQL server has gone away...


解决方案

我通过结合两件事解决了这个问题:

  1. 添加reconnect: true到数据库规范中database.yml
  2. 读取 SQL 文件并单独执行语句,如下所示:

    f = File.new('path/to/file.sql')
    
    while statements = f.gets("") do
      ActiveRecord::Base.connection.execute(statements)
    end  
    
    Run Code Online (Sandbox Code Playgroud)

我必须修改以从我的 SQL 文件中删除一些注释——它们使 ActiveRecord 由于某种原因抛出错误,但这解决了我的问题。


Hna*_*att 0

也许您所在的服务器过载,并且在某些情况下 MySQL 服务器无法执行查询。向您的托管提供商询问性能监控工具,或直接告诉他这个问题。此错误消息应该足以让他们给您答案。