sql >> データベース >  >> RDS >> Mysql

PDO ::commit()の成功または失敗

    重要な部分は、PDOを例外モードに設定することです。 ロールバックを行うためだけにtry-catchを使用する必要はありません。したがって、コードは大丈夫です。この行がどこかにある限り、失敗時にロールバックするだけの場合は、コードを変更する必要はありません。

    $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); 
    

    失敗した場合、スクリプトは終了し、接続が閉じられ、mysqlはトランザクションをロールバックします。

    それでも手動でロールバックしたい場合は、他の回答で述べられているように、適切にロールバックする必要があります。

    を確認してください
    • Exceptionをキャッチしています 、PDOExceptionではありません 、どの特定の例外が実行を中止したかは問題ではないため
    • あなたは再投げています ロールバック後の例外で、問題が通知されます
    • また、テーブルエンジンはトランザクションをサポートします(つまり、Mysqlの場合はMyISAMではなくInnoDBである必要があります)。

    このチェックリストは、私の記事 から抜粋したものです。 これは、この側面や他の多くの側面でも役立つと思われます。



    1. 一般的なMySQLエラー:「通信パケットの読み取り中にエラーが発生しました」

    2. Mysql結合2テーブルを使用して、日付範囲の最大値と最小値を選択します

    3. WindowsにRails3用のmysql2をインストールできません

    4. 一定時間後に行を自動的に更新します