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

Phoenix服务器启动失败:Postgrex报错角色“postgres”不存在

解决Phoenix启动时Postgrex的"role 'postgres' does not exist"错误

嘿,这个问题我帮不少刚学Phoenix的朋友搞定过,别担心!你遇到的[error] Postgrex.Protocol (#PID<0.234.0>) failed to connect: ** (Postgrex.Error) FATAL 28000 (invalid_authorization_specification): role "postgres" does not exist错误,核心原因是你的PostgreSQL里还没创建Phoenix默认依赖的postgres数据库角色。

下面是一步步的解决步骤:

  • 确认PostgreSQL已安装并运行
    先在终端里输入psql --version,如果能显示版本号说明安装成功;如果没反应,先完成PostgreSQL的安装。然后确保服务在运行:

    • Mac(Homebrew安装):执行brew services start postgresql
    • Ubuntu/Debian:执行sudo systemctl start postgresql
    • Windows:在系统服务列表里找到PostgreSQL并启动
  • 创建postgres数据库角色
    打开终端,输入psql postgres进入PostgreSQL的命令行交互界面,然后依次执行以下命令:

    CREATE ROLE postgres WITH LOGIN PASSWORD 'your_password_here'; -- 替换成你想设置的密码
    ALTER ROLE postgres CREATEDB; -- 赋予创建数据库的权限,Phoenix需要这个
    

    执行完后输入\q退出交互界面。

  • 核对Phoenix的数据库配置
    打开项目里的config/dev.exs文件,找到数据库配置块,确保内容和你刚设置的一致:

    config :your_app_name, YourAppName.Repo,
      username: "postgres",
      password: "your_password_here", -- 这里填你刚才设置的密码
      database: "your_app_name_dev",
      hostname: "localhost",
      pool_size: 10
    

    注意把your_app_name换成你实际的应用名称。

  • 创建应用数据库并重启服务
    在项目根目录的终端里执行mix ecto.create,这个命令会用刚才的角色创建对应的开发数据库。等命令执行成功后,再运行mix phoenix.server,应该就能正常启动了!

如果还是有问题,大概率是密码没匹配或者PostgreSQL服务没跑起来,再检查一遍就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:14:10