My name is Georges, this is my blog.
home resume hire me contact me

Duplicate key violates unique constraint

02 Sep 2011 - Boca Raton, FL

A few days ago I got this weird error with one of my PostgreSQL databases:

duplicate key violates unique constraint.

Turns out the DB (or Rails) was trying to write the ids at least 2000 numbers lower than the highest number there, so Rails couldn’t save to it.

While the error in itself seemed messy, the fix was a really easy one.

First verify if that is indeed your problem:

SELECT MAX(id) FROM table_name;
SELECT nextval('table_name_id_seq');

If the second number is lower than the first, then you’re in luck because you just have to run this little piece of code and you’ll be on your way to Merry Codeland (Of course, please do your due diligences and backup your databases!):

SELECT setval('table_name_id_seq', (SELECT MAX(id) FROM table_name)+1);

Reload pgsql and rails, and see if it works now. You’re welcome :)

blog comments powered by Disqus
Fork me on GitHub