MySQL 事务没有返回足够的错误消息来帮助调试

标签 mysql error-handling transactions

以下事务运行没有问题。但是,一旦事务失败,例如列号不匹配,或者任何其他原因,它只会显示错误消息“'SQLWARNING: The request at Linux system time ${LINUX_SYSTEM_TIME} insert failed. Th data will被回滚'”,但没有错误消息显示实际的失败。我想知道是否有任何 MySQL 方法可以在 MySQL 事务中显示错误消息?谢谢。

       delimiter //

        CREATE PROCEDURE 123
        BEGIN

            DECLARE EXIT HANDLER FOR SQLWARNING

                BEGIN

                ROLLBACK;

                SELECT 'SQLWARNING: The request at Linux system time ${LINUX_SYSTEM_TIME} insert failed. Th data will be rollbacked';

                END;


            DECLARE EXIT HANDLER FOR SQLEXCEPTION

                BEGIN

                ROLLBACK;

                SELECT 'The request at Linux system time ${LINUX_SYSTEM_TIME} insert failed. Th data will be rollbacked';

                END;

            START TRANSACTION;

            <do whatever we need in transaction>

            COMMIT;

            END //

            CALL 123;

            DROP PROCEDURE IF EXISTS 

最佳答案

只是为了强调我从@@Solarflare 那里得到的答案。 Resignal 是一个简单的解决方案( MySQL exception handler access exception being handled ):

                DECLARE EXIT HANDLER FOR SQLWARNING

                BEGIN

                ROLLBACK;

                SELECT 'SQLWARNING: whatever error message';

                RESIGNAL;

                END;


            DECLARE EXIT HANDLER FOR SQLEXCEPTION

                BEGIN

                ROLLBACK;

                SELECT 'SQLWARNING: whatever error message;'

                RESIGNAL;

                END;

关于MySQL 事务没有返回足够的错误消息来帮助调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44731775/

相关文章:

mysql使用组从一个表中计算行并从第二个表中加入

php - 如何将搜索结果中的搜索词设置为粗体?

MySql InnoDB 在事务中递增并返回一个字段

MySQL 使用 GROUP BY 而不是 DISTINCT

php - 如何在PHPExcel报表中连接数组中的数据

reactjs - 从发出api请求的函数调用中获取响应或错误

php - 为什么使用 "finally"关键字?

jquery - JqG​​rid 的新模型表单上未显示 afterSubmit 的错误处理

django - commit_on_success 装饰器应该只在 Django 的 View 中使用吗?

.net - 事务范围 v SQLTransaction