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

Windows11执行npx prisma migrate dev遇P1001数据库连接错误求助

解决Windows 11下Docker PostgreSQL固定5432端口时Prisma P1001连接失败问题

问题现象

  • 执行 npx prisma migrate dev 时触发P1001错误:

    Error: P1001: Can't reach database server at localhost:5432
    Please make sure your database server is running at localhost:5432.

  • Docker容器正常运行,且能通过localhost:8080正常访问Adminer
  • 将Docker端口映射改为自动分配宿主机端口(如0.0.0.0:55156->5432/tcp),并修改数据库连接串端口为对应自动分配端口后,npx prisma migrate dev可正常执行

排查与解决方案

1. 检查本地5432端口占用情况

Windows系统中可能存在本地PostgreSQL服务或其他程序占用5432端口,导致Docker的端口映射无法生效,或Prisma误连接到本地服务:

  • 打开命令提示符,执行:
    netstat -ano | findstr :5432
    
  • 若输出显示非Docker进程占用端口,打开任务管理器,找到对应PID的进程并结束,之后重启Docker容器
  • 若为本地PostgreSQL服务占用,可停止该服务:
    net stop postgresql-x64-15  # 替换为你的PostgreSQL服务名称
    
    或修改本地PostgreSQL的端口,避免与Docker容器冲突

2. 修改数据库连接串的主机地址

Windows Docker环境中,localhost有时无法正确映射到容器网络,可改用Docker提供的专用地址host.docker.internal:
修改.env文件中的DATABASE_URL:

DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PW}@host.docker.internal:5432/your_db_name?schema=public"

之后重新执行 npx prisma migrate dev

3. 重置Docker网络

Docker网络转发异常可能导致端口映射失效:

  • 打开Docker Desktop,点击右上角设置图标(⚙️)
  • 进入Resources -> Network
  • 点击Reset network,等待重置完成后重启Docker和容器

4. 检查防火墙拦截

Windows Defender防火墙或第三方安全软件可能拦截5432端口通信:

  • 打开Windows Defender防火墙,点击允许应用或功能通过Windows Defender防火墙
  • 确保Docker Desktop Backend和node.exe(Prisma运行时)被允许通过防火墙
  • 可临时关闭防火墙测试,若连接恢复则需添加对应端口的允许规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:11:10