【问题标题】:How to store MySQL warnings in database?如何在数据库中存储 MySQL 警告?
【发布时间】:2010-04-15 16:20:00
【问题描述】:

我想在数据库中存储一些 SQL 语句引起的警告。例如。之后

mysql> select 1/0;
+------+
| 1/0  |
+------+
| NULL |
+------+
1 row in set, 1 warning (0.00 sec)

mysql> show warnings;
+-------+------+---------------+
| Level | Code | Message       |
+-------+------+---------------+
| Error | 1365 | Division by 0 |
+-------+------+---------------+
1 row in set (0.00 sec)

我想将 SHOW WARNINGS 所说的内容保存到某个持久性表中,以便将来对其进行分析。

假设我知道什么时候需要记录 - 我可以检查是否有 @@warning_count > 0

【问题讨论】:

  • 您希望在数据库级别还是针对特定应用程序执行此操作?
  • 在数据库级别,在存储过程中。

标签: mysql logging warnings show


【解决方案1】:

您可以通过分析诊断在存储过程中完成此操作。例如,以下警告处理程序可以由以下声明

  DECLARE CONTINUE HANDLER FOR SQLWARNING 
  BEGIN 
    GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE, 
         @errno = MYSQL_ERRNO, @message = MESSAGE_TEXT
    ;

    /* select the following into your debugging table */
    SELECT @errno, @sqlstate, @message;
  END;

有关诊断的更多信息可在此处找到: https://dev.mysql.com/doc/refman/5.6/en/get-diagnostics.html

【讨论】:

    【解决方案2】:

    这还不够http://dev.mysql.com/doc/refman/5.0/en/server-options.html#option_mysqld_log-warnings 吗? 也许您可以解析 error.log 并将警告存储在数据库中,如果这是您所追求的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 2018-04-22
      • 2022-01-08
      • 1970-01-01
      相关资源
      最近更新 更多