You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

docker-compose启动PostgreSQL报错FATAL: database does not exist如何解决

问题根因

报错database "preferences" does not exist的核心触发原因分为两类:

  1. 你配置中声明的dev-postgres-data为外部持久化卷,若该卷此前已被使用、且首次初始化时未配置POSTGRES_DB=preferences参数,PostgreSQL容器后续启动只会读取卷内已有数据,不会重复执行初始化逻辑创建新库。POSTGRES_DB等环境变量仅在卷为空、容器首次初始化时生效。
  2. 挂载到/docker-entrypoint-initdb.d/目录下的初始化脚本存在执行错误,导致初始化流程中断,未完成preferences库的创建。

解决步骤

无存量数据需要保留

  • 停止并删除当前运行的容器:docker-compose down
  • 删除已存在的外部卷(会清空卷内所有PostgreSQL数据):docker volume rm dev-postgres-data
  • 检查./docker/postgres目录下的所有.sql、.sh格式初始化脚本,确认无语法错误、执行不会异常中断
  • 重新启动服务即可验证:docker-compose up

需要保留卷内存量数据

  • 先启动PostgreSQL容器,忽略当前报错
  • 进入容器手动创建缺失的库:docker exec -it $(docker-compose ps -q postgres) psql -U user -c "CREATE DATABASE preferences;"
  • 重启容器验证健康检查是否通过:docker-compose restart postgres

注:你配置中的健康检查语法无问题,$$转义符合docker-compose变量转义规则,无需调整。

内容的提问来源于stack exchange,提问作者Melchia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 17:06:03