Isu:
Apabila memasukkan data ke dalam pangkalan data SQLite anda, anda terima ralat "Kekangan UNIK gagal: kod hasil sqlite3 1555."
Penjelasan:
Ralat ini berlaku apabila anda cuba memasukkan data dengan nilai kunci utama yang sudah wujud dalam jadual. Secara lalai, SQLite menguatkuasakan kekangan unik pada lajur kunci utama untuk mengelakkan entri pendua.
Penyelesaian:
Terdapat dua penyelesaian utama untuk mengendalikan ralat ini:
1. Abaikan Rekod Pendua:
Untuk mengabaikan rekod pendua dan terus memasukkan data lain, gunakan sintaks berikut:
INSERT OR IGNORE INTO (column1, column2, ...) VALUES (value1, value2, ...);
2. Gantikan Rekod Sedia Ada:
Untuk menggantikan rekod sedia ada dengan data baharu, gunakan sintaks berikut:
INSERT OR REPLACE INTO (column1, column2, ...) VALUES (value1, value2, ...);
Contoh:
Dalam kod yang anda berikan, anda sedang memasukkan nilai list_id pendua dalam jadual senarai dan nilai item_id pendua dalam jadual item. Untuk mengendalikan ralat ini, anda boleh menggunakan kod yang diubah suai berikut:
Senarai yang diubah suai Sisipkan Pernyataan:
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);
Item yang diubah suai Sisipkan Pernyataan:
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);
Dengan menggunakan sama ada INSERT OR IGNORE atau INSERT OR REPLACE sintaks, anda boleh menyelesaikan ralat gagal kekangan UNIK dan memasukkan data anda seperti yang dimaksudkan.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan 'kekangan UNIK gagal: kod hasil sqlite3 1555' Ralat dalam SQLite?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!