我有一个带有事务提交的大型MySQL过程,该过程从PHP调用并带有一些循环:最大块数。 50个条目,我总共有24213个条目。
这些循环之一产生了一些问题,但我无法获得返回的错误。我已经尝试过使用HANDLER FOR SQLEXCEPTION,SHOW ERRORS和RESIGNAL进行操作,但是我没有得到与此错误有关的任何信息。
每个执行都将结果记录在表中作为日志,我想在其中记录该错误。
SQLEXCEPTION的退出处理程序:
CREATE PROCEDURE `Procedure01`(
IN _Ini INT,
IN _End INT,
IN _CalcDate DATE
)
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
RESIGNAL;
SHOW ERRORS;
ROLLBACK;
SET @sql = CONCAT("INSERT INTO `Log_Procedure` (`From`,`To`,`Datetime`,`Comment`) VALUES ( '", _Ini, "','", _End, "',NOW(),'ERROR: SQLException');");
PREPARE s FROM @sql;
EXECUTE s;
DEALLOCATE PREPARE s;
END;
...
我从这个显示错误中什么也没有得到,无论是从PHP调用还是从phpMyAdmin直接调用。
另一个可能很棒的选择是从这种执行中获得回报:
SET @sql = CONCAT("INSERT INTO `Log_Procedure` (`From`,`To`,`Datetime`,`Comment`) VALUES ( '", _Ini, "','", _End, "',NOW(),'ERROR: SQLException');");
PREPARE s FROM @sql;
EXECUTE s;
DEALLOCATE PREPARE s;
任何帮助将不胜感激!
答案 0 :(得分:1)
使用存储过程的参数列表中的out参数,可以返回错误消息
<svg>