Sql Can';t使用;“始终以身份生成”;在Dbeaver上创建Postgres表时?

Sql Can';t使用;“始终以身份生成”;在Dbeaver上创建Postgres表时?,sql,postgresql,auto-increment,identity-column,Sql,Postgresql,Auto Increment,Identity Column,我正在使用Dbeaver创建一个Postgres数据库表,但在对递增的id值使用“GENERATED ALWAYS AS IDENTITY”时出现语法错误。这很奇怪,因为我在本地主机上创建表时使用了完全相同的语法,并且没有出现任何语法错误或创建表的问题 这是我在尝试保存表时的SQL预览: CREATE TABLE public.conversation ( id bigint NOT NULL GENERATED ALWAYS AS IDENTITY, startdatetime

我正在使用Dbeaver创建一个Postgres数据库表,但在对递增的id值使用“GENERATED ALWAYS AS IDENTITY”时出现语法错误。这很奇怪,因为我在本地主机上创建表时使用了完全相同的语法,并且没有出现任何语法错误或创建表的问题

这是我在尝试保存表时的SQL预览:

CREATE TABLE public.conversation (
    id bigint NOT NULL GENERATED ALWAYS AS IDENTITY,
    startdatetime timestamptz NOT NULL,
    enddatetime timestamptz NOT NULL,
    CONSTRAINT conversation_pk PRIMARY KEY (id)
);


当我试图保存该表时,我得到“ERROR:syntax ERROR at或其附近的'GENERATED'”。我认为这是正确的语法,因为SQL是由Dbeaver本身构建的,在创建本地数据库进行测试时,它工作得很好?

只需使用
bigserial

CREATE TABLE public.conversation (
    id bigserial primary key,
    startdatetime timestamptz NOT NULL,
    enddatetime timestamptz NOT NULL
);

什么是
选择版本()向你展示?@a_horse_,没有名字,在x86_64-pc-linux-gnu上的PostgreSQL 9.5.17,由gcc(Ubuntu 5.4.0-6ubuntu1~16.04.10)5.4.0 20160609编译,Postgres 10中引入了64个比特身份列,你不能在(有些过时的)Postgres 9中使用它们。5@a_horse_with_no_name那么我应该做什么作为替代?升级?或者使用Gordon所示的
serial
bigserial
的行为与始终以身份生成的
稍有不同。如果出于某种原因OP不能使用始终作为身份生成的
,那么它们就足够相似了。当然,这就是为什么我建议在对问题本身的评论中使用它的原因。我只是想指出,有一些细微的差别。