如何在 MySQL 5.5 中获取存储过程的异常消息
Posted
技术标签:
【中文标题】如何在 MySQL 5.5 中获取存储过程的异常消息【英文标题】:How to get exception message on stored procedure in MySQL 5.5 【发布时间】:2012-08-31 04:10:02 【问题描述】:我正在使用 mysql 5.5。要在 MySQL 5.6 上获取异常消息,请使用 GET DIAGNOSTIC
函数。 MySQL 5.5 有没有类似的功能,..?我正在做的项目已经在使用 MySQL 5.5 版本了。
【问题讨论】:
【参考方案1】:您可以尝试使用SHOW ERROR
和SHOW WARNING
。要查看最后一个错误或警告,您可以将其用作:
SHOW ERRORS LIMIT 1 -- for SQL-state > 2
SHOW WARNINGS LIMIT 1 -- for SQL-state 1,2
为了防止列出每个错误,您可以像这样处理一类 SQL 错误:
SQLWARNING 是开头的 SQLSTATE 值类的简写 与“01”。
NOT FOUND 是开头的 SQLSTATE 值类的简写 与“02”。这仅在游标的上下文中相关并且是 用于控制游标到达数据末尾时发生的情况 放。如果没有更多行可用,则会出现无数据条件 SQLSTATE 值为 02000。要检测这种情况,可以设置一个 它的处理程序(或未找到条件)。一个例子显示在 第 12.7.5 节,“游标”。这种情况也发生在 SELECT ... INTO var_list 语句不检索任何行。
SQLEXCEPTION 是 SQLSTATE 值类的简写,它不 以“00”、“01”或“02”开头。
所以要处理异常,你只需要:
DECLARE EXIT HANDLER FOR SQLSTATE SQLEXCEPTION .....;
链接:
http://dev.mysql.com/doc/refman/5.5/en/signal.html
http://dev.mysql.com/doc/refman/5.0/en/declare-handler.html
【讨论】:
我试过了,但没有出现错误。它只显示空白行。我把SHOW ERRORS
语法放在DECLARE EXIT HANDLER FOR SQLEXCEPTION
里面是不是错了,.?
我只能得到消息吗,.? :)
您不需要在DECLARE EXIT HANDLER FOR SQLEXCEPTION
中包含SHOW ERROR
。 SHOW ERROR
可以独立使用。只需将其包含在您的程序中即可。
我明白了,一开始并没有显示错误,因为show errors
之前有一个rollback
。我只能得到消息吗,.?因为我需要它将错误存储到我的日志中。
如何获取错误代码或错误消息以便插入例如到你自己的日志错误表?以上是关于如何在 MySQL 5.5 中获取存储过程的异常消息的主要内容,如果未能解决你的问题,请参考以下文章