簡體   English   中英

使用mysql_query的innodb mysql / php中的事務回滾不起作用

[英]Transaction rollback in innodb mysql/php with mysql_query not working

我正在嘗試執行一堆插入到事務內多個表中的語句,但是當我要求回滾時,一切都返回沒有錯誤,但是數據已插入!

//Returns "YES"
$supports = mysql_query( "SELECT SUPPORT FROM INFORMATION_SCHEMA.ENGINES WHERE ENGINE = 'InnoDB'" );

//Start transaction
mysql_query( "SET AUTOCOMMIT=0" );
mysql_query( "START TRANSACTION" );

//Do some inserts
mysql_query( "INSERT INTO ...." );
$lastId = mysql_query( "SELECT LAST_INSERT_ID() as lastId" );
mysql_query( "INSERT INTO...." );

//Try to rollback
mysql_query( "ROLLBACK" );
mysql_query( "SET AUTOCOMMIT=1" );

這些表都被創建為InnoDB表。 運行SHOW CREATE TABLE <table_name>顯示所有表的創建方式如下:

CREATE TABLE `mytable` (
    ...the columns...
) ENGINE=InnoDB AUTO_INCREMENT=61 DEFAULT CHARSET=latin1

我究竟做錯了什么?

@eggyal導致了答案。 我的START TRANSACTION是在循環內而不是循環外,因此它啟動了多個事務,並且僅回滾了最后一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM