我使用的是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号执行segfault。
我在Windows上,使用Ruby1.9.3p0和Ruby ' MySQL‘gem版本2.8.1,使用MySQL 5.5.16。我已经检查了我复制到Ruby bin文件夹中的libmysql.dll文件与我安装的MySQL版本是否相同。
关于可能出错的地方,你还有什么其他的提示吗?
发布于 2012-07-26 04:31:46
对于将来遇到这种情况的任何人,这里有一个解决方案:
似乎是因为这个版本的mysql gem不能与MySQL 5.1lib一起工作。..。从http://dev.mysql.com/downloads/mysql/5.0.html下载win32.zip-5.0.89- MySQL 5.0非安装版本mysql- noinstall。解压缩libmysql.dll并将其复制到C:\Ruby。然后,问题就解决了。我仍然在运行MySQL 5.1。但是Ruby使用的是这个MySQL 5.0版本的动态链接库。
https://stackoverflow.com/questions/9864466
复制相似问题