2012-03-25 22 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 

ユーザーは、クエリが正しく動作し、どんな21日にセグメンテーション違反になっていない最初の20個の言葉のために、単語を入力します私はそこに入れた。

私はWindows上で、Ruby 1.9.3p0とruby 'mysql' gemバージョン2.8.1とMySQL 5.5.16を使用しています。 Ruby binフォルダにコピーしたlibmysql.dllファイルが、私がインストールしたMySQLと同じバージョンであることを確認しました。

何がうまくいかない可能性について他のヒントはありますか?ここで

+0

あなたが以前に尋ねた質問に対してSO検索しましたか?私は今週早く完全一致を見たと言いました。 –

+0

@MikePurcell:私はあなたがhttp://stackoverflow.com/questions/9667091/segmentation-fault-on-mysql2-ruby-1-9-3-rails-3-2を参照していると思いますが、質問には答えがありませんまだOSは異なっているので、状況も違うと思います。私も他のものを読んだことがありますが、私がすでに失敗したことを除いて、これを解決する方法に関する有用な情報はありません。 –

+0

ああ、親切に無視してください。 –

答えて

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/