我一直在尝试捕获mysql异常,尤其是触发器和存储过程。如何从mysql端捕获异常?我还没有找到任何解决方案。你的帮助会很感激。
由于 亚太区首席技术官Matt
答案 0 :(得分:2)
查看DECLARE HANDLER的语法
http://dev.mysql.com/doc/refman/5.1/en/declare-handler.html
另外,如果您正在尝试调试SP,这可能对您有所帮助:
答案 1 :(得分:2)
因为这是我在触发器中搜索MySQL错误处理的首要问题,我想我会分享我的MySQL 5.5 +解决方案
我的原帖:https://stackoverflow.com/a/26115231/1733365重复下方......
因为当我在MySQL触发器中搜索错误处理时,这篇文章出现在顶部,我想我会分享一些知识。
如果出现错误,您可以强制MySQL使用SIGNAL,但如果您没有将其指定为SQLEXCEPTION类,则不会发生任何事情,因为并非所有SQLSTATE都被视为错误,并且即使这样,如果你有任何嵌套的BEGIN / END块,你也必须确保RESIGNAL。
或者,可能更简单,在触发器中,声明一个退出处理程序并重新签名异常。
CREATE TRIGGER `my_table_AINS` AFTER INSERT ON `my_table` FOR EACH ROW
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
RESIGNAL;
DECLARE EXIT HANDLER FOR SQLWARNING
RESIGNAL;
DECLARE EXIT HANDLER FOR NOT FOUND
RESIGNAL;
-- Do the work of the trigger.
END
如果你的身体出现错误,它将被抛回到顶部并退出并出现错误。这也可以用于存储过程和诸如此类的东西。
适用于任何版本5.5 +。