如何解决Ruby on Rails – Mysql::Error: 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
If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

RTbAxU comment3 ,