0

古いスタイルのmysql_query()関数を使用してトランザクションを実行しています。トランザクション内のクエリの 1 つが失敗しても、ロールバックしていません。影響を受ける行をデバッグしましたが、それらは 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); 
4

1 に答える 1

1

トランザクション データベース エンジンを使用する必要があります。例: INNODB

現在、トランザクションをサポートしていない MyISAM を使用しています。

これは、DB エンジンを変更しない限り、トランザクションを開始またはロールバックできないことを意味します。

MySQL はMyISAM から INNODBに変換する方法を説明します

于 2013-07-26T09:20:39.533 に答える