2009-09-15 12 views
5

RubyでMySQLクエリに問題があります。私は 'mysql' gemを使用します。Rubyでの複数のMySQLクエリ

設定は別のymlファイルに保存され、@conf変数にロードされます。 これは私のコードです:

# connect to the database 
Mysql::new(@conf['sql_host'], @conf['sql_user'], @conf['sql_password'], @conf['sql_base']) 

# it's ok when we're doing this 
my.query("SELECT * FROM `my_table`") do |e| 
    # code 
end 

# Maybe, I've missed something here... 

# really this query will insert value into other table, used SELECT just for testing 
# this throws exception: 'query: not connected' 
my.query("SELECT * FROM `my_table_2`") 

のWindows XP
ルビー1.8.6(2008-08-11パッチレベル287)[I386-MSWIN32]
mysqlの(2.8.1、2.7.3)
のMySQLクライアントのバージョン:5.0.51a

2番目のクエリは「クエリ:接続されていません」をスローします。

答えて

7

まず、あなたのプログラムは大丈夫です。私は100%あなたがlibmysql.dllのバージョンに問題があると確信しています。

これは、Mysqlインストーラから提供されたlibmysql.dllで再現できます。

ダウンロードし、このファイルをCに置き換える:\ ruby​​のbinに\

http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll

と変更せずに、あなたのプログラムを再実行します\。 here

+0

素晴らしい!ありがとう! 私は前にlibmysqlの問題を抱えていましたが、rubyforgeではなく、Mysqlのインストールからコピーしました。できます!よ! – Andrew

+0

ありがとうJirapong。修正を明確にするために、5.0.xライブラリが機能します。私は5.1.42サーバーと5.0.4 libmysql.dllをruby/binに使用しています。 – Sixty4Bit

+0

感謝します!私は一日中いくつかのORMラッパーで試していましたが、ついにRuby Mysqlを直接使用することを断念し、同じ問題に遭遇しました。私にとっても間違ったバージョンであることが判明しました。この1つは解決しました:-) – Mika

0

Rubyのmysql gemを任意のバージョンのWindowsで使用しようとすると、の測定に問題が発生しました。問題が発生しました。私が言うことから、あなたが自分でコンパイルする方法を理解できない限り(それはお尻の王様の痛みです)、それは単に機能しません。

ORM(オブジェクトリレーショナルマッピング)層としてActiveRecordを使用し、WindowsでSQLiteやその他のデータベースを使用して開発し、LinuxでMySQLを使用して実稼働環境を実行していましたか?これは私がしばらく前に取った解決策であり、非常にうまく機能しました。

+0

関連の問題と信用の主な問題は、データベースがすでに行われ、実行されていることです。 私はこのベースのための小さなツールを書いています。 データベースクエリを実行するだけです。 これを行う方法は他にありますか? – Andrew

関連する問題