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

部署在Fly.io上的PostgreSQL数据库EF Core连接失败求助

EF Core连接Fly.io PostgreSQL服务器识别失败排查方案

错误信息

Fail: Microsoft.EntityFrameworkCore.Database.Connection[20004].
An error occurred using the connection to database 'db' on server ' '.

当前连接字符串

"DefaultConnection": "Server=dbname.internal;Port=5432;User Id=api;Password=password;Database=db"

排查步骤

  • 验证Fly.io内部DNS访问场景
    .internal域名是Fly.io内部网络专用,仅在Fly.io容器环境内可解析。如果是本地开发调试,必须通过端口转发访问:
    执行命令:fly proxy 5432:5432 -a <你的PostgreSQL应用名称>
    之后将连接字符串的Server改为localhost,再尝试连接。

  • 核对PostgreSQL应用名称拼写
    连接字符串中的dbname.internal必须与Fly.io上创建的PostgreSQL应用实际名称完全一致。用fly apps list命令查看所有应用,确认名称拼写无错误。

  • 检查数据库用户存在性
    确认User Id=api是目标PostgreSQL实例中已创建的用户。通过fly pg connect -a <你的PostgreSQL应用名称>进入数据库控制台,执行SELECT usename FROM pg_user;查看用户列表,若不存在需创建对应用户。

  • 验证密码准确性
    确保连接字符串中的密码与PostgreSQL实例的凭证一致。用fly pg credentials list -a <你的PostgreSQL应用名称>命令查看当前有效凭证,核对密码无误。

  • 确认网络区域一致性
    你的应用与PostgreSQL实例需处于Fly.io的同一区域,跨区域可能导致网络连通问题。分别执行fly apps info -a <你的应用名称>和fly apps info -a <你的PostgreSQL应用名称>,检查输出中的Region字段是否一致。

  • 测试基础连接性
    排除EF Core层面的问题,直接在Fly.io应用容器内测试PostgreSQL连接:

    1. 执行fly ssh console -a <你的应用名称>进入容器
    2. 运行psql "host=dbname.internal port=5432 dbname=db user=api password=password"
      若此命令无法连接,说明问题出在网络或数据库配置,而非EF Core代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:57:15