Skip to content

在Docker中使用PostgreSQL

创建文件docker-compose.yaml

yaml
version: '3'
services:
  postgres:
    container_name: postgreSQL_db
    image: postgres
    environment:
      - POSTGRES_PASSWORD=c1c107d8f910c066ab109419dab3f470
      - TZ=Asia/Shanghai
      - PGDATA=/var/lib/postgresql/data/pgdata
    ports:
      - "5432:5432"
    volumes:
      - postgreSQL_db_data:/var/lib/postgresql/data
    restart: always

volumes:
  postgreSQL_db_data:

执行docker-compose up -d启动容器。

容器启动成功后,执行docker exec -it postgreSQL_db psql -U postgres可以进入控制台进行后续操作。

错误:column "datlastsysoid" does not exist

这个错误在使用Navicat Premium 16.0.6连接PostgreSQL时会出现,导致无法正常连接至数据库。

具体错误如下:

shell
ERROR:  column "datlastsysoid" does not exist
LINE 1: SELECT DISTINCT datlastsysoid FROM pg_database
                        ^

经过排查,只有在使用PostgreSQL的15版本才会出现此错误(截止此文撰写,PostgreSQL的最新版为15.0)。

推测是因为PostgreSQL在15版本的大版本更新中改动较大,Navicat Premium 16.0.6版本较旧,连接方式不匹配才出现的错误。

解决办法:使用PostgreSQL的14.5及以下版本即可。也可以尝试Navicat Premium的最新版本,不知是否适已经配。