• postgresql 数据库遇到的坑,relation “XXX_id_seq“ does not exist


    relation “XXX_id_seq” does not exist
    网上的解决方法
    第一种解释
    用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)
    ————————————————
    版权声明:本文为CSDN博主「手心守贝」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_35771567/article/details/103616842

  • 相关阅读:
    FPGA边缘检测
    Luogu P5856 【「SWTR-03」Game】
    Luogu P4707 【重返现世】
    Weight Balanced Leafy Tree
    Luogu P4311 【士兵占领】
    Luogu P4174 【[NOI2006]最大获利】
    Luogu P1646 【[国家集训队]happiness】
    Luogu P4313 【文理分科】
    Luogu P4249 【[WC2007]剪刀石头布】
    Luogu P2754 【[CTSC1999]家园 / 星际转移问题】
  • 原文地址:https://www.cnblogs.com/shanghongyun/p/15834039.html
Copyright © 2020-2023  润新知