問題:
SQLite データベースにデータを挿入するときに、 「UNIQUE 制約が失敗しました: sqlite3 結果コード」というエラーが表示される1555."
説明:
このエラーは、テーブルに既に存在する主キー値を持つデータを挿入しようとすると発生します。デフォルトでは、SQLite はエントリの重複を防ぐために主キー列に一意の制約を適用します。
解決策:
このエラーを処理するには、主に 2 つの解決策があります:
1.重複レコードを無視:
重複レコードを無視して他のデータの挿入を続けるには、次の構文を使用します:
INSERT OR IGNORE INTO (column1, column2, ...) VALUES (value1, value2, ...);
2.既存のレコードを置き換える:
既存のレコードを新しいデータで置き換えるには、次の構文を使用します:
INSERT OR REPLACE INTO (column1, column2, ...) VALUES (value1, value2, ...);
例:
提供されたコードでは、リスト テーブルに重複した list_id 値を挿入し、アイテム テーブルに重複した item_id 値を挿入しています。このエラーを処理するには、次の変更コードを使用できます:
変更されたリスト Insert Statements:
INSERT OR IGNORE INTO list VALUES (1, "user1-list1", 1); INSERT OR IGNORE INTO list VALUES (2, "user1-list2", 1); INSERT OR IGNORE INTO list VALUES (3, "user1-list3", 1); INSERT OR IGNORE INTO list VALUES (1, "user2-list1", 2); INSERT OR IGNORE INTO list VALUES (1, "user3-list1", 3); INSERT OR IGNORE INTO list VALUES (2, "user3-list2", 3);
変更された項目 Insert Statements:
INSERT OR IGNORE INTO item VALUES (1, "user1-list1-item1", "FALSE", 1); INSERT OR IGNORE INTO item VALUES (2, "user1-list1-item2", "FALSE", 1); INSERT OR IGNORE INTO item VALUES (1, "user1-list2-item1", "FALSE", 2); INSERT OR IGNORE INTO item VALUES (1, "user1-list3-item1", "FALSE", 3); INSERT OR IGNORE INTO item VALUES (2, "user1-list3-item2", "FALSE", 3); INSERT OR IGNORE INTO item VALUES (1, "user2-list1-item1", "FALSE", 1); INSERT OR IGNORE INTO item VALUES (2, "user2-list1-item1", "FALSE", 1); INSERT OR IGNORE INTO item VALUES (1, "user3-list1-item1", "FALSE", 1); INSERT OR IGNORE INTO item VALUES (1, "user3-list3-item1", "FALSE", 2);
INSERT OR IGNORE または INSERT のいずれかを使用するOR REPLACE 構文を使用すると、UNIQUE 制約失敗エラーを解決し、意図したとおりにデータを挿入できます。
以上がSQLite の「UNIQUE 制約が失敗しました: sqlite3 結果コード 1555」エラーを解決する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。