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');
我有一个序列,它的名字是什么?
答案 0 :(得分:1)
<强>解释强>
您所做的是您实际在当前架构中创建了名为"default.menuitem_menuitem_id_seq"
的序列(可能是public
)。
信息&amp;方法强>
default
是ANSI SQL Standard和PostgreSQL中的保留关键字。
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;
此处并不真正需要您的序列名称附加引号。
答案 1 :(得分:1)
必须在每个限定符上单独引用:
CREATE SEQUENCE "default"."menuitem_menuitem_id_seq"
INCREMENT BY 1
MINVALUE 1 NO MAXVALUE
START WITH 1
NO CYCLE;
否则将在当前架构中创建名为default.menuitem_menuitem_id_seq
的序列