为什么sql文件的格式会影响它们是否可以在PG中运行?

时间:2019-04-16 05:03:56

标签: postgresql docker psql

我已经在我的docker-entrypoint-initdb.d/目录中放置了一个文件。这是文件中的内容:

CREATE TABLE user_test (
    user_id    INTEGER,
    name       VARCHAR(100),
    email      VARCHAR(128),
    active_flg BOOLEAN,
    type       VARCHAR(20),
    CONSTRAINT pk_user PRIMARY KEY (user_id)
);

我遇到的错误是psql:/docker-entrypoint-initdb.d/0001-initial-database-design.sql:8: ERROR: syntax error at or near "CREATE"

我无法运行文件吗?如何更改此文件以使其正常工作?

1 个答案:

答案 0 :(得分:1)

USER是Postgres see the documentation中的保留关键字。通常,应避免使用保留的SQL关键字来命名表和列。如果您确实想按原样继续,请将user放在双引号中:

CREATE TABLE "user" (
    user_id    INTEGER,
    name       VARCHAR(100),
    email      VARCHAR(128),
    active_flg BOOLEAN,
    type       VARCHAR(20),
    CONSTRAINT pk_user PRIMARY KEY (user_id)
);

但是,请记住,如果您选择命名表user,那么您将永远不得不用双引号将其转义。