记一次postgresql数据库插入记录失败的问题。。。

发布时间 2023-12-19 11:03:11作者: 梦醒时风

代码在测试环境中运行了一段时间,之前都没有问题,突然pg数据库中的某个表不能插入记录了,具体来说是新插入的主键与表中已有记录的主键重复导致入库失败,但是主键设置的是自增策略,理论上说,不会重复。网上看到有人说需要设置下该表主键对应序列的下一个值。
查看表的数据定义语句如下
image

可以看到pg数据库中关于主键storageid是如何自增的,定义了序列'datastorage_storageid_seq1',我们可以通过设置自增时该序列下一个值,来避免主键重复的问题。

select setval('序列名', (select max('主键id') from '表名') + 1);
我这里是
select setval('datastorage_storageid_seq1', (select max('storageid') from 'datastorage') + 1)

之后发现数据表可以正常插入记录了。。。