簡體   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