Docker Compose中SpringBoot连接PostgreSQL数据库报错求助
解决PostgreSQL容器报错“database 'minot' does not exist”的问题
问题核心原因
你遇到的报错存在两个关键问题:
- Spring应用连接地址错误:PostgreSQL服务名称是
db-minot-postgres,但Spring配置的SPRING_DATASOURCE_URL中写的是db-minotaur-postgres,会导致连接目标错误; - PostgreSQL初始化逻辑未触发:
POSTGRES_DB环境变量仅在容器第一次启动且数据目录为空时生效,若本地./data目录已存在旧数据库数据,PostgreSQL会跳过初始化,不会创建指定的minot数据库。
解决方案
1. 修正Spring应用的数据库连接URL
修改docker-compose.yml中app服务的SPRING_DATASOURCE_URL配置,将主机名改为正确的服务名称:
SPRING_DATASOURCE_URL: jdbc:postgresql://db-minot-postgres:5432/minot
2. 清理旧数据卷并重启容器
已存在的./data目录会阻止PostgreSQL初始化新数据库,执行以下命令清理并重启:
# 删除本地数据目录 rm -rf ./data # 停止并移除现有容器 docker-compose down # 重新启动容器 docker-compose up -d
备选方案(保留现有数据)
若不想删除现有数据,可手动进入PostgreSQL容器创建minot数据库:
# 进入PostgreSQL容器 docker exec -it minot-db-minot-postgres-1 psql -U postgres
在PostgreSQL命令行中执行创建数据库的SQL:
CREATE DATABASE minot;
执行完成后退出容器,重启Spring应用容器即可。
内容的提问来源于stack exchange,提问作者Manatsa Mbanje
相关产品推荐
相关产品推荐

