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

SQLSTATE [23000]:整合性制約違反のエラー処理

    あなたの質問は非常に曖昧に見えます-整合性制約違反を無視するか、「これ以上挿入しない」という合図にしたいのです。

    insert ignoreでの答えに加えて 解決策-クエリを実行してSQLSTATE[23000]: Integrity constraint violationを取得した場合 エラー、つまりPDOが例外をスローします。 catchをしない場合 それ、あなたのスクリプトは殺されます。強制終了したくない場合は、DBコードをtry-catchコンストラクトにラップします。例:

    try {
        // code here
        $insertItem = $db->query("
                                  INSERT INTO cart (userid, itemid) 
                                  VALUES (:userid, :itemid)", 
                                  array("userid"=>"175", "itemid"=>"12")
                                );
        // more code here
    } catch(Exception $e) {
        // handle exception - 
        // find out if it is caused by integrity contraints violations
        // and if it is - merely go further
        // otherwise do something else, like re-throwing your exception
    }
    

    HTH



    1. 列のフルネームの場合のMysqlの姓による順序

    2. Linuxのカスタムキーストアで保護されたデータの使用

    3. MySQLの説明実行プランの計算、2つのプランの違いを説明する

    4. 無制限のサブカテゴリを作成するための最良の方法は何ですか