我遇到的问题类似于Resque is returning Mysql2::Error: closed MySQL connection: SHOW FIELDS FROM `users`中描述的问题。
在我的情况下,我在长时间运行的Rake任务(3个多小时)中看到它。基本上任务运行从csvs导入数据,然后突然开始吐出“关闭MySQL连接”错误。这只发生在带有远程MySql的staging env中,无法在本地进行repro。
所以我的问题是,为什么Rails应用程序(使用相同的连接属性)可以运行数天没有问题,但我的数据导入任务会在几个小时后爆炸?
答案 0 :(得分:1)
您的连接超时。使用mysql驱动程序长时间运行rake任务时会一直发生这种情况。尝试在database.yml中设置重新连接标志
http://guides.rubyonrails.org/2_3_release_notes.html#reconnecting-mysql-connections
基本上只需添加:
reconnect: true
我感到惊讶的是,由于我一直遇到它,所以没有记录更多。如果这不起作用,请尝试显式调用
ActiveRecord::ConnectionAdapters::ConnectionHandler#verify_active_connections!