【发布时间】:2012-01-26 11:33:00
【问题描述】:
我在将我的 rails 2.3.14 / ruby 1.8.7 应用升级到 3.1.1/1.9.2 时遇到问题:我有一些
(ActiveRecord::StatementInvalid) "Mysql2::Error: MySQL server has gone away"
偶尔发生错误。重要的是要准确地说,我在 2.3.14 和完全相同的 db 上从未遇到过这样的问题(因此错误不应该来自 mysql (v5.5.10))。
例子:
$ rails c production
Loading production environment (Rails 3.1.1)
ruby-1.9.2-p290 :001 > ActiveRecord::Base.connection.active?
=> false
ruby-1.9.2-p290 :002 > exit
$ rails c production
Loading production environment (Rails 3.1.1)
ruby-1.9.2-p290 :001 > ActiveRecord::Base.connection.active?
=> true
这只发生在我的(远程)生产数据库中,我的本地开发数据库没有问题。我试图在我的 database.yml 中设置“重新连接:true”,但它导致了
Mysql2::Error: Host '****' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts':...
我尝试使用仅加载 mysql2 和 activerecord 的小 rb 脚本来隔离问题,但我没有设法以这种方式重现错误(因此它可能与 rails 堆栈相关联)。
由于编码问题(http://www.rorra.com.ar/2010/07/30/rails-3-mysql-and-utf-8/),我无法从“mysql2”返回到“mysql”gem。结果,我不得不将我的生产回滚到我的 rails 2.3.14 应用程序,这让我非常难过...
你知道我可以做些什么来调试它吗?我什至找不到重现错误的可靠方法...有人遇到过同样的错误吗?
我只是发现很少有人提到这个错误(例如:https://github.com/brianmario/mysql2/issues/213)但不是解决方案。
感谢您的帮助。
【问题讨论】:
标签: ruby-on-rails-3 activerecord mysql2