2011-01-31 22 views
3

我在玩mysql2(和mysql 5)gem以及結果和Enumerable結果。如何在IRB中通過一次調用運行多個SQL查詢在IRB中創建寶石?

我可以運行查詢,如

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(或者我需要兩個)。我問,因爲在現實生活中,人們通常運行多個查詢以獲得他們希望他們的方式,結果

+0

我想通了。這與Mysql控制檯類似。而不是 ** results = client.query(「select now(),select version()」)**您執行單個select語句。 所以要使它工作,它必須是 ** results = client.query(「select version(),now()」)** – John 2011-01-31 22:20:03

回答

7

我通過連接到MySQL之前添加此默認查詢選項來解決這個問題:

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

+0

這只是爲我節省了很多小時的頭痛!我一直將SQL複製到客戶端,並且完美運行!工程100% – 2017-02-24 23:31:19

1

您只需在使用一次選擇多個事情,如:

SELECT VERSION(), NOW(); 

如果你需要他們到一個結果,那麼下面的工作:

SELECT CONCAT(VERSION(), NOW());