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

使用Vapor 4执行初始迁移报错:role 'vapor_username'不存在

解决Vapor 4连接Docker PostgreSQL时"role 'vapor_username' does not exist"错误

这个错误的核心是你的PostgreSQL数据库中不存在名为vapor_username的角色(数据库用户),而Vapor项目默认使用这个用户名尝试连接数据库。以下是两种可行的解决方法:

方法一:修改Docker配置,创建对应角色和数据库

  • 打开你的docker-compose.yml文件,修改db服务的配置,添加初始化环境变量:
services:
  db:
    image: postgres:15 # 可根据需求选择PostgreSQL版本
    environment:
      POSTGRES_USER: vapor_username
      POSTGRES_PASSWORD: vapor_password
      POSTGRES_DB: vapor_database
    ports:
      - "5432:5432"
  • 停止现有容器并重置数据卷(首次配置后需执行,否则初始化不生效):
docker-compose down -v
docker-compose up db -d

方法二:修改Vapor项目配置,匹配Docker默认用户

如果不想调整Docker配置,直接修改Vapor的数据库连接参数:

  • 打开项目配置文件(通常是Config/secrets/postgresql.json或Config/postgresql.json),更新为Docker PostgreSQL的默认配置:
{
  "hostname": "localhost",
  "port": 5432,
  "username": "postgres",
  "password": "",
  "database": "postgres"
}
  • 若使用环境变量配置,设置对应的DATABASE_URL:
export DATABASE_URL=postgres://postgres:@localhost:5432/postgres

注意事项

  • PostgreSQL Docker容器仅在首次启动且数据卷为空时,才会执行POSTGRES_USER等环境变量的初始化操作,因此如果之前启动过容器,必须删除数据卷才能让新配置生效。
  • 确保Vapor配置中的用户名、密码、端口、数据库名与Docker中PostgreSQL的配置完全一致。

内容的提问来源于stack exchange,提问作者Глеб Крючков

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:00:59