2012-03-25 33 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/