【发布时间】:2012-07-16 05:47:37
【问题描述】:
在脚本运行一段时间后,我在 Ruby 中遇到了“mysql has gone away”错误。
我想尝试告诉 mysql gem 在连接丢失时自动重新连接。
我当前的代码如下所示:
def self.connect()
begin
if !@@dbh.nil?
self.disconnect
end
@@dbh = Mysql.real_connect(@@server, @@user, @@pass, @@db)
puts "[+] Connected to the " + @@db + " database with user '" + @@user + "'"
rescue Mysql::Error => e
# log error
end
end
以下指南 [0] 说 mysql gem 有一个“重新连接”对象变量,但是,我不确定如何在我的代码中使用它。
如何在上面的代码中实现这个选项?
提前致谢, 瑞恩
[0]http://www.tmtm.org/en/mysql/ruby/
编辑---
好的。我想我已经弄明白了。
我需要在@@dbh = Mysql.real_connect(@@server, @@user, @@pass, @@db) 行之后添加@@dbh.reconnect = true。
注意:根据 IRC 上的 'nice' chapy,mysql gem 可能不是最好的 Ruby gem。
【问题讨论】:
-
您如此依赖
@@类变量有什么特别的原因吗?这是非常规的,以至于 Stack Overflow 语法高亮器甚至都不知道如何使用它们。 -
我不确定原因是什么。数据库类是由其他人编写的。我看看能不能改感谢您的建议!