在Rake任务中关闭MySQL连接

时间:2012-06-26 19:22:00

标签: mysql ruby-on-rails-3

我遇到的问题类似于Resque is returning Mysql2::Error: closed MySQL connection: SHOW FIELDS FROM `users`中描述的问题。

在我的情况下,我在长时间运行的Rake任务(3个多小时)中看到它。基本上任务运行从csvs导入数据,然后突然开始吐出“关闭MySQL连接”错误。这只发生在带有远程MySql的staging env中,无法在本地进行repro。

所以我的问题是,为什么Rails应用程序(使用相同的连接属性)可以运行数天没有问题,但我的数据导入任务会在几个小时后爆炸?

1 个答案:

答案 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!