代码之家  ›  专栏  ›  技术社区  ›  user6248190

错误:Docker compose Postgres中“CREATE”处或附近出现语法错误

  •  1
  • user6248190  · 技术社区  · 5 年前

    我正在尝试使用docker compose和带有postgres sql的dockerfile创建两个表。然而,我得到了以下错误。

    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。

    可能是我使用的postgres图片的版本还是其他什么?我的dockerfiles在我看来是正确的,但如果我遗漏了什么,请务必告诉我。

    这是我的 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"
    

    有什么想法吗?

    1 回复  |  直到 5 年前
        1
  •  3
  •   Pavel Stehule    5 年前

    你错过了分号 BEGIN TRANSACTION