在 MySQL 存储过程中,我正在处理 SQL 异常:
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
SELECT "SQL exception occured." AS "SQL Exception";
SHOW ERRORS;
SHOW WARNINGS;
ROLLBACK;
END;
我知道正在引发异常,因为SQL exception occured
正在显示消息并且事务被回滚。但是,在SHOW ERRORS
orSHOW WARNINGS
表中没有填充任何内容。为什么会这样,我如何判断抛出了哪个 SQL 异常?
这是导致神秘异常的 SQL 语句:
SELECT IF(count(*) = 0, TRUE, FALSE)
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA='myDatabase'
AND TABLE_NAME='exam';
编辑:
Bohemian已通知我异常正在被处理程序吞噬。那么如何找出异常是什么并且仍然回滚呢?在 java catch 块中,我可以使用Exception.getMessage()
or看到异常Exception.printStackTrace()
。MySQL中是否有类似的功能?