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
后面漏了分号
我正在尝试使用 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