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