繁体   English   中英

PHP + MySQL-事务不回滚

[英]PHP + MySQL - transactions dont rollback

我正在使用旧式的mysql_query()函数执行事务。 即使事务中的查询之一失败,它也不会回滚。 我调试了受影响的行,它们为0或1。语法如下:

 $cnx = mysql_connect( .. ); 
 mysql_select_db("DB", $cnx); 
 mysql_query("START TRANSACTION");
 mysql_query("BEGIN");

 $isrollback = -1; 

 for (...) // run through query list 
 {
    mysql_query(".... query_i ....");
    if(mysql_affected_rows() == 0) 
    {
          $isrollback = 1
    }

 }

 // more queries 
 if ($isrollback > 0) 
     mysql_query("ROLLBACK");
 else
     mysql_query("COMMIT); 

您需要使用事务数据库引擎。 例如INNODB

您当前正在使用不支持事务的MyISAM。

这意味着您不更改数据库引擎就无法启动或回滚事务。

MySQL给出了有关如何从MyISAM转换为INNODB的说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM