突然发现我博客发不了文章了,heroku logs
中显示:
duplicate key violates unique constraint.
如果你在 Heroku 上或是使用 pg 数据库的时候遇到跟我一样的问题,可以使用如下的方式来解决。
原因在于 pg 认为的下一个可用 id 实际上已经被占用了,我们可以手动运行 SQL 语句来修复这个问题:
heroku run console
ActiveRecord::Base.connection.execute(“SELECT ...”).values
假如你的模型叫Article,运行下列 SQL 语句:
SELECT MAX(id) FROM articles;
SELECT nextval('articles_id_seq');
对比一下,是不是 seq 的数字小于 max ?
运行这条来修复:
SELECT setval('articles_id_seq', (SELECT MAX(id) FROM artiles)+1);
如是安可。