【问题标题】:How to get exception message on stored procedure in MySQL 5.5如何在 MySQL 5.5 中获取存储过程的异常消息
【发布时间】:2012-08-31 04:10:02
【问题描述】:

我正在使用 MySQL 5.5。
要在 MySQL 5.6 上获取异常消息,请使用 GET DIAGNOSTIC 函数。 MySQL 5.5 有没有类似的功能,..?
我正在做的项目已经在使用 MySQL 5.5 版本了。

【问题讨论】:

    标签: mysql stored-procedures exception-handling


    【解决方案1】:

    您可以尝试使用SHOW ERRORSHOW 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 ERRORSHOW ERROR 可以独立使用。只需将其包含在您的程序中即可。
    • 我明白了,一开始并没有显示错误,因为show errors之前有一个rollback
      我只能得到消息吗,.?
      因为我需要它将错误存储到我的日志中。
    • 如何获取错误代码或错误消息以便插入例如到你自己的日志错误表?
    猜你喜欢
    • 2014-09-22
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    相关资源
    最近更新 更多