-4

我正在学习 Postgres 并尝试创建命令。但它给出的错误是我无法理解的错误。命令是:

CREATE TABLE Package (
    id smallint NOT NULL primary key,
    package_name varchar ( 45 ) not null,
    updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP,
    count integer(2) default null,
    pkg_desc varchar ( 45 ) not null,
    bucket_name varchar ( 45 ) not null,
    active bit(1),
    status INT(2) default null,
    metadata JSONB,
    path varchar ( 45 ) default null,
    created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP,
    run_status INT(5) 
)

和错误:

ERROR: syntax error at or near "("
  Position: 186
4

2 回答 2

1

您使用integer(2)和 INT(2)创建列。您不得添加号码。整数是固定大小的。此外,您应该决定一种编写方式试试这个:

CREATE TABLE Package (
    id smallint NOT NULL primary key,
    package_name varchar ( 45 ) not null,
    updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP,
    count INT default null,
    pkg_desc varchar ( 45 ) not null,
    bucket_name varchar ( 45 ) not null,
    active bit(1),
    status INT default null,
    metadata JSONB,
    path varchar ( 45 ) default null,
    created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP,
    run_status INT
)
于 2021-04-13T07:06:52.907 回答
0

integer并且int类型不接受参数。你不能写成这样integer(2),这会产生语法错误。

create table Package (
  id smallint not null primary key
  , package_name varchar(45) not null
  , updated_at timestamp null default current_timestamp
  , count integer default null
  , pkg_desc varchar(45) not null
  , bucket_name varchar(45) not null
  , active bit(1)
  , status int default null
  , metadata jsonb
  , path varchar(45) default null
  , created_at timestamp null default current_timestamp
  , run_status int
)

官方文档应该会有所帮助: https ://www.postgresql.org/docs/13/datatype.html

于 2021-04-13T07:10:14.527 回答