[英]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.