ERROR: syntax error at or near "CREATE" in Docker-compose Postgres

ERROR: syntax error at or near "CREATE" in Docker-compose Postgres

我正在尝试使用 docker-compose 创建两个表,并使用 postgres sql 创建一个 docker 文件。但是,我收到以下错误。

psql:/docker-entrypoint-initdb.d/tables/users.sql:11: ERROR: syntax error at or near "CREATE" postgres_1 | LINE 2: CREATE TABLE users

我不确定我做错了什么,但我通过 eversql.com/sql-syntax-check-validator/ 检查了我的 sql 查询,它似乎是有效的 sql.

可能是我正在使用的 postgres 图像的版本还是其他?我的 docker 文件对我来说是正确的,但如果我遗漏了什么,请告诉我。

这是我的 Dockerfile

FROM postgres:latest

ADD /tables/ /docker-entrypoint-initdb.d/tables/
ADD /deploy_schemas.sql/ /docker-entrypoint-initdb.d/

这是我的deploy_schemas.sql

-- Deploy login and users tables

\i '/docker-entrypoint-initdb.d/tables/users.sql'
\i '/docker-entrypoint-initdb.d/tables/login.sql'

这是我的 users.sql

BEGIN TRANSACTION


CREATE TABLE users (
    id serial PRIMARY KEY,
    name VARCHAR(100),
    email text UNIQUE NOT NULL,
    entries BIGINT DEFAULT 0,
    joined TIMESTAMP NOT NULL
);


COMMIT;

这是我的 login.sql

BEGIN TRANSACTION 



CREATE TABLE login (
    id serial PRIMARY KEY,
    hash VARCHAR(100) NOT NULL,
    email text UNIQUE NOT NULL,
); 




COMMIT;

最后是docker-compose.yml

version: "3.8"

services:
  #Backend API
  smart-brain-api:
    container_name: backend
    build: ./
    command: npm start
    working_dir: /usr/src/test-api
    environment:
      POSTGRES_URI: postgres://admin:password@postgres:5432/test-api
    links:
      - postgres
    ports:
      - "3000:3000"
    volumes:
      - ./:/usr/src/test-api

  #Postgres
  postgres:
    environment:
      POSTGRES_USER: admin
      POSTGRES_DB: docker-test-api
      POSTGRES_HOST: postgres
      POSTGRES_PASSWORD: password
    build: ./postgres  
    ports:
      - "5432:5432"

有什么想法吗?

你在 BEGIN TRANSACTION

后面漏了分号