删除表数据后,PHP mysqli-> rollback()无法正常工作

时间:2018-07-05 19:12:19

标签: php mysqli transactions

我的数据库使用 InnoDB 引擎,但是看来我无法回滚事务。

这是我的代码:

try {

    $transaction_started = $mysqli->autocommit( FALSE ); // begin transaction
    if ($transaction_started === FALSE) {
        throw new Exception( "Could not start transaction." );
    }

    $mysqli->query( "DELETE FROM `my_table`" ); // empty table

    $mysqli->query( "ALTER TABLE `my_table` AUTO_INCREMENT = 1;" ); // reset auto-increment value

    throw new Exception( "Test" );

    $mysqli->commit();

}
catch (Exception $e) {

    $transaction_rolled_back = $mysqli->rollback(); // rollback the transaction.
    if ($transaction_rolled_back === FALSE) {
        echo "Rollback failed!";
    }

    echo $e->getMessage();

}

运行此代码时,捕获了异常,并且没有“回滚失败!”消息显示-这表明回滚有效。但是我表中的数据被删除了。

回滚是否不应该用于删除的数据,或者我做错了什么或者我可能没有检查过?

我见过类似的问题herehere,但它们不能解决我的问题。

0 个答案:

没有答案