我有一个 ruby 脚本,需要“mysql2”并使用像 mysql 这样的查询语句
@db.query("从region_id=#{region["id"]}"的街道中选择sname,id")
但它总是向我报告这样的错误:
main.rb:261:in `query': MySQL server has gone away (Mysql2::Error)
from main.rb:261:in `block (3 levels) in <main>'
from main.rb:258:in `each'
from main.rb:258:in `block (2 levels) in <main>'
from main.rb:254:in `each'
from main.rb:254:in `block in <main>'
from main.rb:253:in `loop'
from main.rb:253:in `<main>'
我的Ubuntu上的脚本没问题,但是,我的生产环境是CentOS,并且在那里我从源代码安装了MySQL。我的 Rails 应用程序运行正常,并且还需要“mysql2”,但是当我运行此脚本时,它失败了。
我认为问题与 my.cnf 有关,但我不知道如何配置它。
最佳答案
mysql2 gem 提供 an option至 reconnect如果连接断开,则返回 MySQL。不要更新 my.cnf 文件,而是更新 gem 的 database.yml 文件以包含
reconnect: true
选项。这将确保 mysql2 gem 在需要时尝试重新连接到 MySQL。
关于mysql - 独立脚本报告 "MySQL server has gone away"; my.cnf 有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6080055/