我有一个带有事务提交的大型 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 调用的 SHOW ERRORS 中没有得到任何结果。
另一个很好的选择是从这种执行中获得返回:
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;
任何帮助将不胜感激!
最佳答案
使用存储过程的参数列表中的out参数,可以返回错误信息
@ErrorMessage varchar OUTPUT
关于mysql - 如何返回 MYSQL PROCEDURE 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55454159/