[转]postgresql 数据库遇到的坑,relation “XXX_id_seq“ does not exist
原文出处:https://blog.csdn.net/qq_35771567/article/details/103616842
网上的解决方法
- 第一种解释
用psotgresql练手的时候打算 从生产数据库到开发数据库 ,转存sql脚本。
运行sql脚本的时候数据和结构都刷不过来,于是检查sql脚本和报错,一直报relation “performance_id_seq” does not exist ,查阅文档得知:
在postgresql表中建立了自增字段,id定义为Serial 类型,当执行完成建表语句后,其字段便成:
“id” int4 NOT NULL DEFAULT nextval(‘performance_id_seq’::regclass)
这种形式
但是导出sql脚本时候直接定义成这种形式,postgresql不能识别,想必是postgresql的一个小bug吧,因此自增的id,在建表的时候应该定义为: “id” serial - 第二种解释

- 他们好像说的是一回事啊,怎么改 serial 呀,我是新手不知道啊
我的解决方法
- 新建查询,执行
CREATE SEQUENCE IF NOT EXISTS XXXX_id_seq;
- 执行sql文件
- 完成了
相关技能
- 查询所有自增序列
SELECT "c"."relname" FROM "pg_class" "c" WHERE "c"."relkind" = 'S';
- pgSQL导表或者创建表的时候,检查是否存在自增字段序列,然后创建
CREATE SEQUENCE IF NOT EXISTS tablename_id_seq;
- 创建自增序列
CREATE SEQUENCE tablename_id_seq
CREATE SEQUENCE tablename_id_seq START 10;
- 删除某个自增序列
DROP SEQUENCE tablename_id_seq
- 更新某个自增序列
alter sequence tablename_id_seq restart with 100
- 查询下一个序列
select nextval('tablename_id_seq ');
- 使用自增序列
nextval('tablename_id_seq'::regclass)
本站文章除注明转载外,均为原创文章。转载请注明:文章转载自:
葱爆GIS—刘博方GIS博客(
https://liubf.com )