繁体   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