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

使用Drizzle执行db:push时遇数据库连接错误求助

Drizzle执行db:push报错:Either "uri" or "host", "database" are required for database connection

问题背景

  • 正在学习Drizzle,尝试将Schema推送到MySQL数据库,使用SQL Workbench管理,数据库密码为admin
  • npm run db:generate执行成功,已创建目标数据库
  • 执行npm run db:push时触发连接参数缺失错误

配置文件内容

drizzle.config.ts

import type { Config } from "drizzle-kit";
import dotenv from "dotenv";

dotenv.config();

export default {
  schema: "./src/db/schema.ts",
  out: "./src/db/migrations",
  dbCredentials: {
    connectionString: process.env.DB_URL!,
  },
  driver: "mysql2",
} satisfies Config;

.env

DB_URL="mysql:admin@admin:3306/drizzlenode"

问题原因与修复方案

错误根源是MySQL连接字符串格式不符合标准,Drizzle无法解析无效的连接字符串,导致无法提取连接所需的主机、数据库名等参数。

1. 修正连接字符串格式

MySQL标准连接字符串格式为:

mysql://[用户名]:[密码]@[主机地址]:[端口]/[数据库名]

你的.env文件中DB_URL存在两处错误:

  • 缺少协议部分的//
  • 用户名与密码的分隔格式错误(应为用户名:密码而非用户名@密码)

修正后的.env内容:

DB_URL="mysql://admin:admin@localhost:3306/drizzlenode"

注:若数据库主机不是本地localhost,替换为实际的IP地址或域名即可

2. 验证环境变量加载

可在drizzle.config.ts中临时添加日志,确认环境变量是否正确加载:

import type { Config } from "drizzle-kit";
import dotenv from "dotenv";

dotenv.config();
// 添加日志验证
console.log("Loaded DB_URL:", process.env.DB_URL);

export default {
  schema: "./src/db/schema.ts",
  out: "./src/db/migrations",
  dbCredentials: {
    connectionString: process.env.DB_URL!,
  },
  driver: "mysql2",
} satisfies Config;

执行npm run db:push前,检查控制台输出的连接字符串是否与修正后的一致。

3. 重新执行推送命令

确认配置无误后,重新运行:

npm run db:push

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 07:22:28