7

我想在数据库中存储一些 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.

4

2 回答 2

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

于 2019-09-23T13:31:11.747 回答
0

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

于 2011-09-04T11:14:04.670 回答