COMMIT后无法执行任何MySQL查询

时间:2014-02-13 10:29:34

标签: php mysql

我使用START TRANSACTION执行一些MySQL查询,但在执行COMMIT后,以下查询在数据库中不生效

使用mysqli_query以相同的顺序执行以下查询:

SET names utf8

SET AUTOCOMMIT=0

START TRANSACTION

INSERT INTO table1 (a, b) VALUES (1,2) ;

INSERT INTO table2 (c, d) VALUES (1,1) ;

INSERT INTO table2 (c, d) VALUES (2,1) ;

COMMIT

INSERT INTO table3 (e, f) VALUES (9,7) ;< - 这不会插入任何东西!!

注意:最后一个查询应该在START TRANSACTION COMMIT块之外执行。

这真让我疯狂。因为我似乎无法弄清楚问题!!

2 个答案:

答案 0 :(得分:0)

我认为问题是指令的顺序。 尝试在最后执行提交。

SET names utf8

SET AUTOCOMMIT=0

START TRANSACTION

INSERT INTO table1 (a, b) VALUES (1,2) ;

INSERT INTO table2 (c, d) VALUES (1,1) ;

INSERT INTO table2 (c, d) VALUES (2,1) ;

INSERT INTO table3 (e, f) VALUES (9,7) ;

COMMIT

答案 1 :(得分:0)

问题在于SET AUTOCOMMIT=0,因此我必须在每次查询后查询COMMIT

因此解决方案是在每次查询后设置SET AUTOCOMMIT=1或使用COMMIT