org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint “xxl_job_in

2022-08-23 15:36:21 浏览数 (2)

目录

  • 1 问题
  • 2 解决

1 问题

postgresql插入数据时主键冲突异常(ERROR:duplicate key value violates unique constraint)

我出现的异常

代码语言:javascript复制
org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "xxl_job_info_pkey"

是主键冲突异常,每次插入数据时重新确认自增主键的取值,而是会使用缓存提高效率。

这就导致某些情况下插入数据(例如SQL语句中指定了ID)不会更新这个自增主键下一个取值的缓存,进而在下次插入时触发错误。

2 解决

代码语言:javascript复制
SELECT setval('TABLE_COLUMN_seq', (SELECT max(COLUMN) FROM "TABLE"));

其中 TABLE 是表名,COLUMN 是自增的那一列的名字,例如:

代码语言:javascript复制
SELECT setval('user_id_seq', (SELECT max(id) FROM "user"));

如果执行以上的sql语句报错 ERROR: currval of sequence “user_id_seq” is not yet defined in this session

那么最开始执行

代码语言:javascript复制
SELECT nextval(pg_get_serial_sequence('user', 'id'));

0 人点赞