Menyelesaikan masalah Urutan Kunci Utama Tidak Segerak PostgreSQL
Memasukkan baris pangkalan data baharu kadangkala boleh mencetuskan ralat kunci pendua disebabkan oleh ketidakpadanan jujukan kunci utama. Masalah ini sering timbul daripada pengurusan jujukan yang tidak betul semasa import dan pemulihan pangkalan data.
Memahami Masalah:
Isu berlaku apabila serial
urutan jenis data yang berkaitan menjana ID yang sudah ada dalam jadual. Ini berlaku kerana jujukan tidak dilaraskan dengan betul agar sepadan dengan ID sedia ada tertinggi.
Penyelesaian:
Berikut ialah cara untuk membetulkan penyahsegerakan jujukan ini:
Kumpulkan Data Penting: Sambung ke pangkalan data PostgreSQL anda menggunakan psql
dan laksanakan pertanyaan ini:
<code class="language-sql"> SELECT MAX(id) FROM your_table; -- Highest ID in the table SELECT nextval('your_table_id_seq'); -- Next sequence value</code>
Bandingkan Jujukan dan ID Maksimum: Jika nilai jujukan tidak lebih besar daripada ID maksimum, tetapan semula diperlukan.
Tetapkan Semula Jujukan: Gunakan arahan SQL ini untuk menetapkan semula jujukan dengan betul:
<code class="language-sql"> BEGIN; LOCK TABLE your_table IN EXCLUSIVE MODE; -- Prevent concurrent inserts SELECT setval('your_table_id_seq', (SELECT GREATEST(MAX(your_id), nextval('your_table_id_seq')-1) FROM your_table)); COMMIT;</code>
Nota Penting: Sentiasa sandarkan pangkalan data anda sebelum membuat perubahan ini.
Dalam Ringkasan: Langkah-langkah ini menyegerakkan semula urutan kunci utama PostgreSQL anda dengan berkesan, menyelesaikan konflik yang timbul semasa proses import atau pemulihan data. Ingat kepentingan sandaran pangkalan data untuk keselamatan data.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Urutan Kunci Utama yang tidak segerak dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!