MySQL导致sqldump成功回滚失败

时间:2016-04-13 14:47:40

标签: mysql transactions mysqldump

我有几个SQL脚本(alter table,create table,insert data,update etc.)。

我把它包装成一个交易

SET AUTOCOMMIT = 0;
START TRANSACTION;
//code create, alter, insert...
COMMIT

我认为它只会在成功时处理代码。但即使失败,我也修改了表格。所以我必须恢复数据库再次运行脚本。

我尝试用COMMIT代替ROLLBACK。但它没有帮助。

有没有办法只在成功时获得改变?

2 个答案:

答案 0 :(得分:0)

尝试在发生故障时处理错误以进行回滚:

DECLARE CONTINUE HANDLER FOR NOT FOUND 
    BEGIN 
        SET @error = 1;
        SET @error_string = 'erreur de type NOT FOUND';
    END;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION   
    BEGIN 
        SET @error = 1;
        SET @error_string = 'erreur de type SQLEXCEPTION';
    END;
SET @error = 0;
SET @error_string = '';
-- start transact
START TRANSACTION;
//code ...
    IF (@error <> 0) THEN
    ROLLBACK;
    //LEAVE MAj_DOC;
ELSE 
    commit;
END IF;
END

答案 1 :(得分:0)