当前位置:  开发笔记 > 编程语言 > 正文

使用Ruby on Rails"MySQL服务器已经消失"

如何解决《使用RubyonRails"MySQL服务器已经消失"》经验,为你挑选了3个好方法。

在我们的Ruby on Rails应用程序运行了一段时间后,它开始抛出500秒,"MySQL服务器已经消失".这通常是一夜之间发生 它最近开始这样做,我们的服务器配置没有明显的变化.

 Mysql::Error: MySQL server has gone away: SELECT * FROM `widgets`

重新启动mongrels(不是MySQL服务器)修复它.

我们该如何解决这个问题?



1> mixonic..:

Ruby on Rails 2.3为您的数据库连接提供了一个重新连接选项:

production:
  # Your settings
  reconnect: true

看到:

Ruby on Rails 2.3发行说明,子部分4.8重新连接MySQL连接.

重新访问MySQL自动重新连接

祝好运!



2> Laurie Young..:

这可能是由于MySQL的持久连接消失(如果它发生在一夜之间可能会超时),并且Ruby on Rails无法恢复连接,默认情况下应该这样做:

在文件vendor/rails/actionpack/lib/action_controller/dispatcher.rb中是代码:

if defined?(ActiveRecord)
  before_dispatch { ActiveRecord::Base.verify_active_connections! }
  to_prepare(:activerecord_instantiate_observers) {ActiveRecord::Base.instantiate_observers }
end

该方法verify_active_connections!执行多个操作,其中一个操作是重新创建任何过期的连接.

导致此错误的最可能原因是,这是因为猴子补丁重新定义了调度程序不能调用verify_active_connections!,或者verify_active_connections!已更改等.


是啊; 当我遇到这个时,我通过捕获`ActiveRecord :: StatementInvalid`一次并手动调用`ActiveRecord :: Base.verify_active_connections!`来解决问题.

3> Matt Connoll..:

ActiveRecord::Base.connection.verify!在Ruby on Rails 4中试用。验证ping服务器并在未连接时重新连接。

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有