【问题标题】:How to run multiple sql queries through one call in Mysql2 Gem in IRB?如何在 IRB 的 Mysql2 Gem 中通过一次调用运行多个 sql 查询?
【发布时间】:2011-06-18 21:51:19
【问题描述】:

我正在使用 mysql2(和 mysql 5)gem 以及结果和 Enumerable 结果。

我可以运行诸如

之类的查询
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 控制台中运行以下查询并返回结果,我将如何在 Mysql2 Gem 中做同样的事情:

select version();select now()

我将如何在一个命令行中使用 Mysql2 gem 做同样的事情(或者我需要两个)。我问是因为在现实生活中,人们通常会运行多个查询以按照他们想要的方式获得结果。

【问题讨论】:

  • 我想通了。这类似于 Mysql 控制台。而不是 results = client.query("select now(), select version()") 你做一个单一的选择语句。所以要让它工作,它必须是 results = client.query("select version(),now()")

标签: mysql ruby mysql2


【解决方案1】:

我通过在连接到 MySQL 之前添加这个默认查询选项解决了这个问题:

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

【讨论】:

  • 这让我省去了很多小时的头痛!我不断将 SQL 复制到客户端,它运行完美!工作 100%
【解决方案2】:

您可以使用 a 一次选择多个内容,如下所示:

SELECT VERSION(), NOW();

如果您需要将它们整合到一个结果中,那么以下方法将起作用:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 2018-12-19
    • 2018-05-04
    • 1970-01-01
    相关资源
    最近更新 更多