Manusia adalah makhluk yang pelupa, sangat pelupa, tapi apa jadinya kalau PostgreSQL yang kita pakai hilang ingatan? Yah hal ini bisa saja terjadi sama kayak apa yang gw alamin.
Hilang ingatan? datanya hilang? atau databasenya hilang? gak sampe hilang, cuman lupa doang jadi perlu diingatkan.
Jadi ceritanya gw lagi membuat sebuah API untuk create data dan somehow proses create yang seharusnya gampang banget di Rails, just in blink of eyes malah nge-return error:
PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "tablename_pkey" DETAIL: Key (id)=(12) already exists.
How come! Error karena ID Primary Key udah ada. We are creating new data here!
Gw pun berkesimpulan bahwa ada kode Rails gw yang salah, tapi setelah gw coba kode yang sama dengan model/tabel yang berbeda, it works!
Akhirnya gw mulai bertanya pada guru kita google
And I know Allah will not test beyond the capabilities of His servants.Gw menemukan masalahnya bukan di Rails tapi di DB Engine yang gw pakai, yah PostgreSQL.
Ternyata PostgreSQL lupa jumlah ID Primary Key di tabel yang gw pakai dan gw harus ngingetin (red: reset), caranya? just execute this one line SQL syntax:
SELECT pg_catalog.setval(pg_get_serial_sequence('tablename', 'id'), (SELECT MAX(id) FROM tablename)+1);
And done akhirnya kode gw berjalan dengan mulus tanpa error.
Don't forget to Like, Comment and Share, thanks.
No comments:
Post a Comment