Php 提交后无法执行任何MySQL查询
我使用START TRANSACTION执行一些MySQL查询,但在执行COMMIT之后,以下查询不会在数据库中生效 使用mysqli_query以相同的顺序执行以下查询: 设置名称utf8 设置自动提交=0 启动事务 在表1中插入a、b值1,2 在表2中插入c、d值1,1 在表2中插入c、d值2,1 承诺Php 提交后无法执行任何MySQL查询,php,mysql,Php,Mysql,我使用START TRANSACTION执行一些MySQL查询,但在执行COMMIT之后,以下查询不会在数据库中生效 使用mysqli_query以相同的顺序执行以下查询: 设置名称utf8 设置自动提交=0 启动事务 在表1中插入a、b值1,2 在表2中插入c、d值1,1 在表2中插入c、d值2,1 承诺 在表3 e中插入f值9,7 我认为问题在于说明书的顺序。 尝试在最后执行commit SET names utf8 SET AUTOCOMMIT=0 START TRANSACTION
在表3 e中插入f值9,7 我认为问题在于说明书的顺序。 尝试在最后执行commit
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
问题是因为设置AUTOCOMMIT=0,所以我必须在每次查询后查询COMMIT
因此,解决方案是要么将set AUTOCOMMIT设置为1,要么在每次查询后使用COMMIT。最后一个查询应该在提交后执行,因为无论是提交还是回滚都必须执行。很抱歉,我在问题中没有说清楚。要显式禁用自动提交模式,请使用以下语句:SET autocommit=0;通过将autocommit变量设置为零禁用autocommit模式后,对事务安全表(如InnoDB、BDB或NDBCLUSTER的表)的更改不会立即永久化。必须使用“提交”将更改存储到磁盘,或使用“回滚”忽略更改。