解决nextval: reached maximum value of sequence问题

问题描述

最近遇到一个PostgreSQL表新数据无法插入的问题,报错如下

ERROR: nextval: reached maximum value of sequence "xxx_xxx_seq" (2147483647)
 (SQLSTATE 2200H)

看报错原因是sequence达到最大值

解法

1. 重置sequence起始值为1

ALTER SEQUENCE xxx_xxx_seq RESTART WITH 1; 

2. 查看当前sequence

SELECT nextval('xxx_xxx_seq');

3. 重置自增主键

TRUNCATE tableName RESTART IDENTITY;

【附】通过表名查询sequence名

如果只知道表名,需要查询sequence名,可以使用下列语句

SELECT column_name, column_default 
FROM information_schema.columns 
WHERE table_name = 'table_name' AND column_default LIKE 'nextval%';

得到的result中column_default字段中单引号里面的值就是sequence名

参考资料1
参考资料2

你可能感兴趣的:(数据库,pgsql,postgresql,sql)