2011-01-31 8 views
3

私はmysql2(とmysql 5)gemとその結果とEnumerableの結果で遊んでいます。Mysql2で1回の呼び出しで複数のSQLクエリを実行する方法IRBのGem?

私は、このような

results = client.query("select now()") 

としてクエリを実行することができると私はまた、

results = client.query("select version()") 

しかし、私がやりたいようにクエリを実行することができますがノッチそれを取るです。実際の人生では、私は人々が複数のクエリを実行すると仮定します。だから私はどのように私はバージョンと時間をワンショットで得ることができることを確認します。 -

私はを動作しないことを試してみました

もの:

results = client.query("select version(); select now()") 

私が手にエラーがある:今、私は私が実行できることを理解

Mysql2::Error: You have an error in your SQL Syntax; check the manual that corresponds to your Mysql Version for the right syntax to use near 'select now()' at line1 

Mysql Consoleでクエリを実行して結果を返すと、Mysql2のGemで同じことをどうすればできますか:

select version();select now() 

私はMysql2 gemを1つのコマンドラインで実行する方法(または2つが必要です)。実際の生活の中で、人々は通常、彼らは彼らで好きな方法で結果を得るために複数のクエリを実行するので、私は聞いて

+0

私はそれを理解しました。これはMysqlコンソールと同様に動作します。 の代わりに** results = client.query( "select now()、select version()")**単一のselect文を実行します。 これを機能させるには、 ** results = client.query( "select version()、now()")** – John

答えて

7

私は、MySQLに接続する前に、このデフォルトのクエリオプションを追加することで、この問題を解決しました:。

Mysql2::Client.default_query_options[:connect_flags] |= Mysql2::Client::MULTI_STATEMENTS

+0

これはちょうど私の頭痛の数時間を節約しました!私はSQLをクライアントにコピーし続け、それは完全に走った!作品100% –

1

あなただけのように、一度使用した時に複数のものを選択することができます:あなたは1つの結果にそれらを必要とする場合

SELECT VERSION(), NOW(); 

は、その後、次のように動作します:

SELECT CONCAT(VERSION(), NOW()); 
関連する問題