找不到 postgres 序列

Cant find postgres sequence

Hibernate 找不到我的序列,异常是:

Caused by: org.postgresql.util.PSQLException: 
              ERROR: relation "default.menuitem_menuitem_id_seq" does not exist

好的,我自己试试,连接数据库:

mydb=# CREATE SEQUENCE "default.menuitem_menuitem_id_seq" INCREMENT BY 1 
               MINVALUE 1 NO MAXVALUE START WITH 1 NO CYCLE;
ERROR:  relation "default.menuitem_menuitem_id_seq" already exists
mydb=# select nextval('default.menuitem_menuitem_id_seq');
ERROR:  relation "default.menuitem_menuitem_id_seq" does not exist
LINE 1: select nextval('default.menuitem_menuitem_id_seq');

我有序列吗?它的名字是什么?

说明

您所做的是在当前模式(可能是 public)中实际创建了一个名称为 "default.menuitem_menuitem_id_seq" 的序列。

信息与方法

default 是 ANSI SQL 标准和 PostgreSQL.

中的保留关键字

From the Postgres manual:

Key Word    PostgreSQL  SQL:2011    SQL:2008    SQL-92
DEFAULT     reserved    reserved    reserved    reserved

如果你想 CREATE SEQUENCE 在你的模式中,它只能有一个名称 "default" 那么你需要:

CREATE SEQUENCE "default".menuitem_menuitem_id_seq INCREMENT BY 1 
               MINVALUE 1 NO MAXVALUE START WITH 1 NO CYCLE;

此处不需要在序列名称周围添加引号。

必须分别对每个限定符进行引用:

CREATE SEQUENCE "default"."menuitem_menuitem_id_seq" 
INCREMENT BY 1 
MINVALUE 1 NO MAXVALUE 
START WITH 1 
NO CYCLE;

否则将在当前架构中创建名为 default.menuitem_menuitem_id_seq 的序列