我正在使用官方的postgresql:13data镜像,并使用位于/var/lib/postgresql/ DockerHub的.SQL文件初始化一个数据库。虽然这样可以工作,但很难调试,因为docker/docker-compose非常模糊:
...
docker-postgresql-1 | /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/hito.sql
docker-postgresql-1 | DROP SCHEMA
docker-postgresql-1 | CREATE SCHEMA
docker-postgresql-1 | CREATE TABLE
docker-postgresql-1 | INSERT 0 3
docker-postgresql-1 | CREATE TABLE
docker-postgresql-1 | INSERT 0 9
docker-postgresql-1 | CREATE TYPE
docker-postgresql-1 | CREATE TABLE
docker-postgresql-1 | CREATE TABLE
docker-postgresql-1 | CREATE TABLE
docker-postgresql-1 | CREATE TABLE
docker-postgresql-1 | CREATE TABLE
docker-postgresql-1 | CREATE TABLE
docker-postgresql-1 | CREATE TABLE
docker-postgresql-1 | CREATE TABLE
docker-postgresql-1 | CREATE TABLE
docker-postgresql-1 | CREATE TABLE
docker-postgresql-1 | CREATE TABLE
docker-postgresql-1 | CREATE FUNCTION
docker-postgresql-1 | CREATE TRIGGER
docker-postgresql-1 | CREATE TABLE
...有没有办法让Postgres更具体地说明它在做什么?例如,它应该如下所示:
docker-postgresql-1 | DROP SCHEMA MYSCHEMA
docker-postgresql-1 | CREATE SCHEMA MYSCHEMA
docker-postgresql-1 | CREATE TABLE MYTABLE1
docker-postgresql-1 | INSERT 0 3 INTO TABLE MYTABLE1, 1 skipped because it already exists but not aborted due to ON_CONFLICT_DO_NOTHING
docker-postgresql-1 | CREATE TABLE MYTABLE2
docker-postgresql-1 | INSERT 0 9 INTO TABLE MYTABLE2, ALL SUCCESSFULL
docker-postgresql-1 | CREATE TYPE MYTABLE
docker-postgresql-1 | CREATE TABLE MYTABLE3
docker-postgresql-1 | CREATE TABLE MYTABLE4我可以使用echo语句模拟其中的一部分,但不是全部。有没有什么方法可以让Postgresql不那么神秘,给我更多关于数据库初始化到底发生了什么的细节?我的一些表是空的,默认情况下它提供给我的日志不足以查明发生了什么。然而,它也不应该给我几千行成功的SQL insert语句,只给我一个摘要和什么时候出错。
发布于 2021-11-28 12:36:43
您可能希望使用"log_statement=all"参数启动postgres实例。示例:
version: '3.9'
services:
db:
image: postgres:latest
restart: always
environment:
POSTGRES_PASSWORD: example
command: ["postgres", "-c", "log_statement=all"] # override entrypoint command with log_statement argument
ports:
- 5432:5432
volumes:
- ./pgdata:/docker-entrypoint-initdb.d/这将为日志提供更多的粒度:
postgres-db-1 | /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/init.sql
postgres-db-1 | 2021-11-28 12:34:50.704 UTC [63] LOG: statement: CREATE USER myUser;
postgres-db-1 | CREATE ROLE
postgres-db-1 | 2021-11-28 12:34:50.705 UTC [63] LOG: statement: CREATE DATABASE dev_db;
postgres-db-1 | CREATE DATABASE
postgres-db-1 | 2021-11-28 12:34:50.769 UTC [63] LOG: statement: GRANT ALL PRIVILEGES ON DATABASE dev_db TO myUser;
postgres-db-1 | GRANT
postgres-db-1 | 2021-11-28 12:34:50.770 UTC [63] LOG: statement: CREATE DATABASE myApp_test;
postgres-db-1 | CREATE DATABASE
postgres-db-1 | 2021-11-28 12:34:50.817 UTC [63] LOG: statement: GRANT ALL PRIVILEGES ON DATABASE dev_db TO myUser;
postgres-db-1 | GRANThttps://stackoverflow.com/questions/70142623
复制相似问题