在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的最新版本,不知是否适已经配。