07 Juni 2012

IntegrityError: duplicate key value violates unique constraint "table_name_pkey"

Bismillahirrahmaanirrahiim

Pernah mengalami masalah seperti ini?
Gagal ketika mau buat data baru di suatu form ... dengan error:
contoh:

IntegrityError: duplicate key value violates unique constraint "ir_module_module_dependency_pkey"

padahal kemaren2 bisa??

terus kenapa ini?

Saya mengalami masalah ini beberapa minggu lalu... 

Ketika itu saya sedang tidak masuk kantor, dan team saya hubungi saya masalah ini...
Dia bilang, setelah diklik berkali2 baru bisa...

kenapakah?

Setelah mencari beberapa sumber, saya menemukan link berikut:

Selidik punya selidik, ternyata team saya sempat melakukan ketidaksengajaan,
yaitu restore database produksi dengan data backup database sebelumnya... Whoaaa 
kacau balau deh...

Akibatnya yaitu deh, banyak tabel yang nilai next sequence nya tidak sesuai... 
karena restore database yang sudah terisi pasti gagal, tapi ternyata ada beberapa data yang terestore... diantaranya nilai sequence dari tabel berubah sesuai dengan nilai sequence data backup..

AKhirnya kacau..
COntoh tabel ir_module_module_dependency. 
nilai max(id) nya 384. nilai ini diperoleh dengan jalankan query;

SELECT max(id) from ir_module_module_dependency;

tapi nilai next sequencenya yang didapatkan dari query berikut
select nextval('ir_module_module_dependency_id_seq');
masih 190, padahal seharusnya 385 kan?

terus solusinya bagaimana?
sesuai dengan link yang saya sampaikan sebelumnya, maka solusinya adalah update nilai next sequence dari tabel yang bermaslah tersebut;

caranya dengan jalankan query berikut:
SELECT setval('ir_module_module_dependency_id_seq', (SELECT MAX(id) FROM ir_module_module_dependency)+1);

habis itu coba, jalankan lagi query:

select nextval('ir_module_module_dependency_id_seq');

pasti nilainya sudah berubah jadi 385..

Selesai deh...
masalahnya banyak sekali tabel yang terpengaruh...
akhirnya yaa perbaiki setiap terjadi masalah saja...

ohya jangan lupa backup database nya dulu ya......

Semoga membantu


Tidak ada komentar:

Posting Komentar