2011-01-31 2 views
3

나는 mysql2 (및 mysql 5) gem과 결과 및 Enumerable 결과를 가지고 놀고있다.IRB의 Mysql2 Gem에서 한 번의 호출을 통해 여러 SQL 쿼리를 실행하는 방법은 무엇입니까?

나는 그런

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의 콘솔에서 쿼리를 다음 결과를 다시 얻을, 어떻게 MySQL에서 동일한 일을 할 것이라고 보석 :

select version();select now() 

0 어떻게 하나 명령 줄에서 Mysql2 보석과 같은 할 (또는 내가이 필요 할) 것입니다. 실제 생활에서, 사람들은 대개 자신들이 원하는 방식으로 결과를 얻기 위해 여러 쿼리를 실행하기 때문에 물어

+0

알아 냈습니다. 이것은 MySQL 콘솔과 비슷하게 작동합니다. 대신 ** 결과 = client.query의 단일 선택 문을 ** (") 지금 (선택 버전() 선택"). 그래서 ("지금(),()를 선택 버전") ** – John

답변

7

내가 MySQL로 연결하기 전에이 기본 쿼리 옵션을 추가하여이 문제를 해결했다.

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

+0

가 ** 결과로 = client.query있을 것, 그것이 작동되도록하는 이것은 단지 나에게 두통의 많은 시간을 저장! 나는 계속 SQL을 클라이언트로 복사하고 완벽하게 돌아갔다. 작품 100 % –

1

당신은 같이 한 번을 이용하여 여러 가지를 선택할 수 있습니다 : 당신은 하나 개의 결과로 필요한 경우

SELECT VERSION(), NOW(); 

, 그럼 다음은 작동합니다

SELECT CONCAT(VERSION(), NOW()); 
관련 문제