【问题标题】:Display query along with results from a file显示查询以及文件中的结果
【发布时间】:2012-10-05 16:22:58
【问题描述】:

MySQL 版本:5.58 MySQL 社区服务器

我正在尝试组织每个开发版本的脚本,以便我们的生产 dba 在发布期间更容易执行脚本。我有一些具有更新、插入、删除语句的脚本,然后是一个调用这些脚本的主脚本,因此 dba 只需在发布期间调用主脚本。

master.sql 包含: 源文件1.sql 源文件2.sql 源文件2.sql

在调试这些脚本的过程中,我使用 'tee' 记录到一个文件中,对于在每个单独的 sql 文件中运行的每个查询,我都会得到类似的结果:

查询正常,1 行受影响(0.01 秒) 匹配行:0 更改:0 警告:0

在上面的示例中,它无法更新行,因为它在 where 子句中找不到匹配项,因此我需要查看该查询以了解原因。但我看不到查询,因为它没有与结果一起显示,所以我必须尝试计算结果,然后查看原始文件以确定哪个查询有问题。这对每个文件中的少量查询没什么大不了的,但如果我在一个文件中有数百个查询,那就很痛苦了。

我的问题是:有没有办法让 mysql 显示实际查询及其产生的结果,而不必在文件中的每个查询之后都有某种打印语句(即选择“我的查询”) ?

谢谢

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您可以使用 mysql 客户端的详细选项。 例如:

    mysql -u xxxx -pxxxx -h xxxxx -P XXXX -vvv --show-warnings --line-numbers < x.sql
    

    将生成包含查询文本的详细日志。

    【讨论】:

    • 每个建议似乎都值得,但我认为这个解决方案最适合我的情况。谢谢。
    【解决方案2】:

    如果您使用的是tee,听起来您有一个 bash 脚本。尝试在执行每个查询之前回显查询(或查询的名称)。

    【讨论】:

      【解决方案3】:

      您可以启用 0 秒的慢查询日志记录,这样每个查询都会被记录,这样您将获得结果以及 SQL 语句本身。我不确定它是否为您提供了足够的信息。

      # Time: 121005 11:39:51
      # User@Host: user[user] @ localhost []
      # Query_time: 0.003103  Lock_time: 0.000077 Rows_sent: 0  Rows_examined: 3
      SET timestamp=1349455191;
      update test set end = Null;
      

      【讨论】:

        猜你喜欢
        • 2020-04-27
        • 1970-01-01
        • 2018-07-31
        • 2013-01-31
        • 2012-12-30
        • 1970-01-01
        • 1970-01-01
        • 2020-08-28
        相关资源
        最近更新 更多