我正在使用Ruby 1.9.3并且我遇到了这个奇怪的问题,'mysql'Ruby gem在执行20个查询之后就完全出现了分段错误。
这是执行查询的代码:
def load
dbh = Mysql::new($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME)
begin
res = dbh.query("SELECT word, type FROM words WHERE word = '#{dbh.escape_string(word)}';")
rescue Mysql::Error => e
puts "Error occurred during SQL query"
end
res.each do |row|
@word = row[0]
@type = row[1]
end
dbh.close if dbh
end
每次用户输入一个单词时都会调用此代码,对于查询正常工作的前20个单词,无论我放在那里,都会在21日进行段错误。
我在Windows上,使用Ruby 1.9.3p0和ruby'mysql'gem version 2.8.1,使用MySQL 5.5.16。我已经检查过我复制到Ruby bin文件夹的libmysql.dll文件与我安装的MySQL版本相同。
您对可能出现的问题有任何其他暗示吗?
答案 0 :(得分:1)
以下是任何遇到此问题的人的解决方案:
看来原因是这个版本的mysql gem不起作用 使用MySQL 5.1 lib。 [...]下载MySQL 5.0 noinstall 版本mysql-noinstall-5.0.89-win32.zip来自 http://dev.mysql.com/downloads/mysql/5.0.html。解压缩libmysql.dll 并将其复制到C:\ Ruby \ bin。然后,问题就解决了。我仍然 运行MySQL 5.1。但是Ruby使用这个MySQL 5.0版本的dll。