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