2012-03-25 118 views
2

我正在使用Ruby 1.9.3,并且正在执行20个查询之后,我遇到了'mysql'Ruby gem正在发生分段错误的奇怪问题。Ruby'mysql'宝石分割错误

这是执行的查询代码:

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

你怎么会这么搜索以前问的问题吗?本周早些时候,我可以发誓我已经看到了一场精确的比赛。 – 2012-03-25 22:01:37

+0

@MikePurcell:我想你是指http://stackoverflow.com/questions/9667091/segmentation-fault-on-mysql2-ruby-1-9-3-rails-3-2但这个问题没有答案但操作系统不同,所以我认为即使情况可能不同。我也读过其他的,但没有有用的信息说明如何解决这个问题,因为我已经尝试失败了。 – 2012-03-25 22:44:18

+0

啊,好吧,请不要理会。 – 2012-03-25 22:48:47

回答

1

这里是谁在将来遇到此对任何人的解决方案:

看来原因是此版本的MySQL宝石不使用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。

来源:http://fuyun.org/2010/01/ruby-mysql-adapter-on-windows/