【问题标题】:Comma throwing errors in table creation in PGadmin4在 PGadmin4 中创建表时出现逗号抛出错误
【发布时间】:2021-08-12 17:26:24
【问题描述】:

尝试在 PGadmin 中生成表时,我收到以下错误:

ERROR:  syntax error at or near ","
LINE 3:     "ID" integer NOT NULL DEFAULT,    
                                         ^

为什么不喜欢逗号?这是PGadmin生成的sql,奇怪它不喜欢自己的sql。

CREATE TABLE public.email_list
(
    "ID" integer NOT NULL DEFAULT,
    "FIRST NAME" "char",
    "LAST NAME" "char",
    "EMAIL" "char",
    "TITLE" "char",
    "LOCATION" "char",
    "COMPANY WEBSITE" "char",
    "COMPANY TYPE" numeric,
    "DATE ADDED" timestamp with time zone,
    "LAST CONTACT DATE" date,
    "STATUS CODE" "char",
    CONSTRAINT "ID" PRIMARY KEY ("ID")
)

TABLESPACE pg_default;

ALTER TABLE public.email_lists
    OWNER to postgres;

【问题讨论】:

  • 您没有提供DEFAULT 值。仅供参考,您不需要引用类型名称,所以char 而不是“char”。此外,您最好使用varchar 而不是char,如果没有其他原因,那么没有长度的char 将默认长度为1。
  • 与您的问题无关,但是:您应该真正避免使用那些可怕的带引号的标识符。他们的麻烦比他们值得的要多得多。 wiki.postgresql.org/wiki/…
  • @a_horse_with_no_name,其实我也错过了这个。 OP 使用的是"char",它是一种内部类型,比char 更受限制。

标签: sql postgresql ddl


【解决方案1】:

第一次查看您的查询时,我发现有些东西看起来不合适,这里我展示了我是如何修复它的。

CREATE TABLE public.email_list
(
    "ID" integer NOT NULL DEFAULT, <<-- You have to set DEFAULT follow with some value e.g : DEFAULT 0, or u can remove the DEFAULT keyword instead.
    "FIRST NAME" "char",
    "LAST NAME" "char",
    "EMAIL" "char",
    "TITLE" "char",
    "LOCATION" "char",
    "COMPANY WEBSITE" "char",
    "COMPANY TYPE" numeric,
    "DATE ADDED" timestamp with time zone,
    "LAST CONTACT DATE" date,
    "STATUS CODE" "char",
    CONSTRAINT "ID" PRIMARY KEY ("ID")
)

希望这可以帮助解决问题。

【讨论】:

  • 这只会产生另一个问题,即所有“char”列都转换为单字节类型,您输入的任何内容都将被截断为单个字符。很确定OP不希望那样。 “char”是一种内部类型,不应在用户表中使用。请参阅Character types 表 8.5。特殊字符类型。
猜你喜欢
  • 1970-01-01
  • 2018-08-07
  • 1970-01-01
  • 1970-01-01
  • 2017-01-23
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多