我偶尔会收到此错误。我在 stackoverflow 中阅读了一些解决方案,但它们是关于 rails 2 或 mysql 的。任何帮助将不胜感激。
ActiveRecord::StatementInvalid (Mysql2::Error: MySQL server has gone away
我偶尔会收到此错误。我在 stackoverflow 中阅读了一些解决方案,但它们是关于 rails 2 或 mysql 的。任何帮助将不胜感激。
ActiveRecord::StatementInvalid (Mysql2::Error: MySQL server has gone away
错误的原因有很多。请参阅下页了解可能的原因。也许您的数据包大小设置得太小。
尝试通过调用一个语句导入大文件时出现此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 文件中删除一些注释——它们使 ActiveRecord 出于某种原因抛出错误,但这解决了我的问题。
当我在开发环境中运行“rake db:reset”命令时,我遇到了完全相同的问题。但是当我运行“rake db:migrate:reset && rake db:seed”时,我从未看到此错误消息。
虽然这很奇怪,但这可能会对这个问题有所启发。如果我的帖子能以某种方式找到解决方案,我会很高兴。
也许您托管的服务器超载,在某些情况下 MySQL 服务器无法执行查询。向您的托管服务提供商询问性能监控工具,或直接告诉他这个问题。这个错误信息应该足以让他们给你一个答案。