首页 > 解决方案 > 为什么sql文件的格式会影响它们是否可以在PG中运行?

问题描述

我在我的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".

能够运行文件我缺少什么?如何更改此文件以使其正常工作?

标签: postgresqldockerpsql

解决方案


USER是 Postgres 中的保留关键字,请参阅文档。通常,您应该避免使用保留的 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)
);

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


推荐阅读