我的数据库使用 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();
}
运行此代码时,捕获了异常,并且没有“回滚失败!”消息显示-这表明回滚有效。但是我表中的数据被删除了。
回滚是否不应该用于删除的数据,或者我做错了什么或者我可能没有检查过?