Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL事务未回滚_Mysql_Transactions_Rollback - Fatal编程技术网

MYSQL事务未回滚

MYSQL事务未回滚,mysql,transactions,rollback,Mysql,Transactions,Rollback,我在Mysql 5.1.73-cll中有以下存储过程: BEGIN DECLARE finished1 INTEGER DEFAULT 0; DECLARE cursor1 CURSOR FOR SELECT ... FROM table1 WHERE Id= 1; DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished1 = 1; DECLARE EXIT HANDLER FOR SQLEXCEPTION BE

我在Mysql 5.1.73-cll中有以下存储过程:

BEGIN
   DECLARE finished1 INTEGER DEFAULT 0;
   DECLARE cursor1 CURSOR FOR SELECT ... FROM table1 WHERE Id= 1;
   DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished1 = 1;
   DECLARE EXIT HANDLER FOR SQLEXCEPTION
      BEGIN
        CALL Debug('SQLEXCEPTION');
        ROLLBACK;
        CALL Debug('Rollback executed');
     END;
   START TRANSACTION;
      INSERT INTO table2(...)  VALUES (...);  /* Statement 1*/
      OPEN cursor1;
  label1: LOOP
         FETCH cursor1 INTO var1, var2;
         IF finished1 = 1 THEN
            INSERT INTO table1(...) VALUES (...);  /* Statement 2*/
            LEAVE label1;
         END IF;
         UPDATE table1 SET ... WHERE Id=1;     /* Statement 3*/
         LEAVE label1;
         END LOOP label1;        
      CLOSE cursor1;
   COMMIT;
END
当我故意在语句3中引入SQL错误,并确保finished1=0时,我希望语句1能够回滚,但事实并非如此。 通过我的调试过程,我知道Rollback语句已经执行。所有表都是InnoDb。
我做错了什么?

我无法重现这个问题。请参阅。感谢您构建SQLFIDLE示例,我不知道该工具。我将对此进行研究,看看是否可以重现这个问题。我发现是我的调试过程执行了隐式提交。愚蠢的再次感谢您的帮助,并向我展示了SQL fiddle工具!