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

Fedora环境连接Postgres数据库报错,Windows与Gitpod可正常运行

问题:Fedora本地无法连接Vercel数据库,报ETIMEDOUT超时错误
  • 新手使用Fedora跟随Next.js教程开发
  • Windows本地、Gitpod环境均可正常连接Vercel数据库,但Fedora本地连接失败
  • 核心报错:NeonDbError: fetch failed,根源为ETIMEDOUT连接超时
  • 已尝试安装PostgreSQL驱动并启动进程,问题未解决

完整报错日志

Database Error: NeonDbError: Error connecting to database: fetch failed
    at execute (webpack-internal:///(rsc)/./node_modules/@neondatabase/serverless/index.js:4689:21)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async fetchRevenue (webpack-internal:///(rsc)/./app/lib/data.ts:30:22)
    at async Page (webpack-internal:///(rsc)/./app/dashboard/page.tsx:19:21) {
  code: null,
  sourceError: TypeError: fetch failed
      at node:internal/deps/undici/undici:12618:11
      at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
    cause: AggregateError [ETIMEDOUT]: 
        at internalConnectMultiple (node:net:1116:18)
        at internalConnectMultiple (node:net:1184:5)
        at Timeout.internalConnectMultipleTimeout (node:net:1710:5)
        at listOnTimeout (node:internal/timers:575:11)
        at process.processTimers (node:internal/timers:514:7) {
      code: 'ETIMEDOUT',
      [errors]: [Array]
    }
  }
}
 ⨯ app/lib/data.ts (33:10) @ fetchRevenue
 ⨯ Error: Failed to fetch revenue data.
    at fetchRevenue (./app/lib/data.ts:35:15)
    at async Page (./app/dashboard/page.tsx:19:21)
  31 |   } catch (error) {
  32 |     console.error('Database Error:', error);
> 33 |     throw new Error('Failed to fetch revenue data.');
     |          ^
  34 |   }
  35 | }
  36 |
 ⨯ app/lib/data.ts (33:10) @ fetchRevenue
 ⨯ Error: Failed to fetch revenue data.
    at fetchRevenue (./app/lib/data.ts:35:15)
    at async Page (./app/dashboard/page.tsx:19:21)
digest: "1123824755"
  31 |   } catch (error) {
  32 |     console.error('Database Error:', error);
> 33 |     throw new Error('Failed to fetch revenue data.');
     |          ^
  34 |   }
  35 | }
解决方案

1. 检查防火墙规则

Fedora默认启用firewalld,大概率是防火墙拦截了出站连接:

  • 临时关闭防火墙测试:
    sudo systemctl stop firewalld
    
    重启Next.js服务后尝试连接,若成功则是防火墙问题。
  • 永久允许PostgreSQL端口(5432)的出站流量:
    sudo firewall-cmd --add-port=5432/tcp --permanent
    sudo firewall-cmd --reload
    

2. 排查代理设置

代理配置错误会导致连接超时:

  • 查看当前代理环境变量:
    echo $HTTP_PROXY $HTTPS_PROXY
    
  • 临时取消代理测试:
    unset HTTP_PROXY HTTPS_PROXY
    
    之后重启项目服务,确认是否能连接。

3. 验证DNS解析

DNS解析失败会导致无法定位数据库服务器:

  • ping数据库域名测试(替换为你的实际数据库域名):
    ping your-db-hostname.neon.tech
    
  • 若ping不通,切换公共DNS(比如Google DNS):
    编辑/etc/resolv.conf,添加:
    nameserver 8.8.8.8
    nameserver 8.8.4.4
    
    保存后重试连接。

4. 检查Node.js版本兼容性

@neondatabase/serverless对Node.js版本有要求,过低版本可能引发问题:

  • 查看当前Node.js版本:
    node -v
    
  • 升级到LTS版本(推荐18.x或20.x):
    使用nvm安装:
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
    nvm install --lts
    nvm use --lts
    

5. 重置网络栈

系统网络栈异常也可能导致连接失败:

  • 重启网络服务:
    sudo systemctl restart NetworkManager
    
  • 若无效,直接重启系统:
    sudo reboot
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:03:22