返回列表

Ruby on Rails – Mysql::Error: Lost connection to MySQL server during query:

默认分类 2011-03-30 18:41:06

转载:http://blog.thinklet.net/franky/2009/02/10/ruby-on-rails-mysqlerror-lost-connection-to-mysql-server-during-query/

Ruby on Rails – Mysql::Error: Lost connection to MySQL server during query:

前段时间,我们的CE平台不断出现上述错误。原因是:mysql server 的链接断开后,Rails的Active Record没有检测到,断续执行数据库查询。

Mysql链接保持时间默认为3600秒,在/etc/my.cnf 里可以修改名为wait_time参数的值以改变链接保持的时间。 Rails中Active Record的并不会自动检测与数据库的链接是否是活动的,断开后也不会自动重新链接;如果mysql链接超时,自动断开后,Active Record并不知道,再执行时,就会抛出Mysql::Error: Lost connection to MySQL server during query:的错误。

解决方法时:修改Active Record检证时间。 修改config/environment.rb配置文件,将config.active_record.verification_timeout = XXX 这句加入到Rails::Initializer.run do |config| …. end中, 值设为小于或等于mysql wait time的值 。

例如,mysql server 的wait_time=120,那我们rails的设置应该如下: Rails::Initializer.run do |config|

 config.active_record.verification_timeout = 118   #注,理论上小于等于120都没问题的

………

end