我刚刚遇到了一个Django和PostgreSQL相关的问题,但是我不理解其中的原因。
我有一个简单的模型,定义如下:
class MyModel(models.Model):
my_field = models.IntegerField()
my_other_field = models.TextField()
在我的看法中,我有一些类似的东西:
my_object = MyModel(my_field=1, my_other_field='blah')
my_object.save()
一切都很好,直到今天早上。我遇到了这个错误:
IntegrityError at /my_url/
duplicate key value violates unique constraint "my_model_pkey"
DETAIL: Key (id)=(3) already exists.
CONTEXT: Remote SQL command: INSERT INTO public.my_model(id, my_field, my_other_field) VALUES ($1, $2, $3) RETURNING id
我曾经遇到过这个错误,我知道它与PostgreSQL同步我的模型关联的顺序表和id列的方式有关。我必须在PostgreSQL中运行此函数,直到id
返回的值大于id
的最大值。
select nextval('my_model_id_seq'::regclass);
我想问的是:为什么这种情况会发生?以及如何避免将来再次发生?
顺便说一下,这是我唯一向表中插入数据的方式,我从未手动插入过数据。
希望我的问题已经足够清楚了。
my_model_id_seq
出了问题。 - njzk2