Как выполнить несколько запросов SQL через один вызов в Mysql2 Gem в IRB? - PullRequest
3 голосов
/ 01 февраля 2011

Я играю с самоцветом mysql2 (и mysql 5), его результатами и перечисляемыми результатами.

Я могу выполнять запросы, такие как

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()

Как бы я сделал то же самое с gem Mysql2 в этой командной строке (или мне нужно два). Я спрашиваю, потому что в реальной жизни люди обычно запускают несколько запросов, чтобы получить результаты так, как они хотят.

Ответы [ 2 ]

8 голосов
/ 14 апреля 2011

Я решил эту проблему, добавив эту опцию запроса по умолчанию перед подключением к MySQL:

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

1 голос
/ 18 мая 2011

Вы можете просто выбрать несколько вещей одновременно с помощью a, например:

SELECT VERSION(), NOW();

Если они нужны в одном результате, то будет работать следующее:

SELECT CONCAT(VERSION(), NOW());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...