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

执行npx prisma migrate dev报错P1001:无法连接本地MySQL 3306端口

解决Prisma 5.2.2连接本地MySQL 8.2时的P1001错误

错误信息

执行npx prisma migrate dev时触发以下错误:

Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": MySQL database "nextapp123" at "localhost:3306"

Error: P1001: Can't reach database server at `localhost`:`3306`

Please make sure your database server is running at `localhost`:`3306`.

配置文件

schema.prisma

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}

model User {
  id        Int     @id @default(autoincrement())
  email     String  @unique
  name      String
  followers Int     @default(0)
  isActive  Boolean @default(true)
}

.env

DATABASE_URL="mysql://root:Sqlnotmy1@localhost:3306/nextapp123"

已完成的排查操作

  • 本地MySQL Server 8.2服务正常运行,3306端口处于监听状态
  • 可通过DBeaver、DataGrip成功连接本地MySQL
  • 已在my.ini中配置bind-address = 0.0.0.0
  • 尝试关闭防火墙
  • 可正常连接PlanetScale在线MySQL并执行迁移

可行解决方案

1. 修复版本兼容性问题

Prisma 5.2.2对MySQL 8.2的支持存在适配缺陷,可通过以下方式解决:

  • 降级MySQL:将MySQL 8.2降级至8.0.x系列(Prisma对该版本支持更成熟),再执行迁移命令
  • 升级Prisma:更新到最新稳定版(如5.10+),新版本已修复高版本MySQL的兼容问题,执行命令:
    npm install prisma@latest
    npx prisma generate
    

2. 替换连接地址

将DATABASE_URL中的localhost替换为127.0.0.1,绕开DNS解析可能出现的异常:

DATABASE_URL="mysql://root:Sqlnotmy1@127.0.0.1:3306/nextapp123"

3. 切换MySQL认证插件

MySQL 8.0+默认使用caching_sha2_password,部分客户端存在兼容问题,为root用户切换至mysql_native_password:

  1. 登录MySQL控制台:
    mysql -u root -p
    
  2. 执行修改命令:
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Sqlnotmy1';
    FLUSH PRIVILEGES;
    
  3. 重启MySQL服务后重新执行npx prisma migrate dev

4. 确认目标数据库存在

手动检查nextapp123数据库是否已创建,若未创建则先执行:

CREATE DATABASE nextapp123;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:12:54