使用Drizzle-Kit与Supabase执行yarn push时遇到Postgres用户/租户未找到错误
Drizzle-Kit与Supabase执行yarn push时遇到Postgres用户/租户未找到错误
嘿,看到你用Drizzle-Kit搭配Supabase执行yarn push时碰到了这个致命错误,Tenant or user not found的提示基本指向数据库连接凭据出了问题,我来帮你一步步排查解决:
核心问题定位
这个错误码XX000虽然是Postgres的通用致命错误,但结合提示来看,90%的概率是Drizzle无法用你配置的信息成功认证到Supabase的Postgres数据库。
排查&解决步骤
1. 先核对Supabase的连接字符串
先去Supabase后台复制完全正确的连接字符串,别自己手敲容易出错:
- 打开你的Supabase项目 → 左侧菜单「Settings」→「Database」
- 找到「Connection string」板块,选择
Node.js格式的连接字符串,它应该长这样:postgresql://postgres:你的数据库密码@db.你的项目ID.supabase.co:5432/postgres - 重点检查这几个点:
- 用户名是不是
postgres(Supabase默认的数据库超级用户) - 密码是不是你创建项目时设置的数据库密码(别把Supabase的API密钥搞混了!这是新手最容易踩的坑)
- 主机地址有没有打错,要和Supabase后台的完全一致
- 用户名是不是
2. 修复你的Drizzle配置文件
你贴的drizzle.config.ts应该补全成类似这样的结构(适配你的项目路径):
import { defineConfig } from 'drizzle-kit'; export default defineConfig({ schema: './src/db/schema.ts', // 替换成你实际的Schema文件路径 out: './drizzle', // 迁移文件的输出目录,可自定义 driver: 'pg', // 用pg驱动连接Postgres dbCredentials: { connectionString: process.env.DATABASE_URL!, // 从环境变量加载连接字符串更安全 }, });
- 确保环境变量
DATABASE_URL能正确加载:- 在项目根目录创建
.env文件,把刚才复制的连接字符串写进去:DATABASE_URL="你的完整连接字符串" - 执行命令前先验证变量是否生效:
Mac/Linux终端:echo $DATABASE_URL
Windows CMD:echo %DATABASE_URL%
Windows PowerShell:echo $env:DATABASE_URL - 如果环境变量加载有问题,也可以临时直接在命令行指定:
DATABASE_URL="你的完整连接字符串" yarn drizzle-kit push:pg
- 在项目根目录创建
3. 确认Supabase数据库状态
- 登录Supabase后台,看看你的项目数据库是不是正常运行状态,有没有被暂停或者误删
- 虽然这个错误不是网络问题,但也可以顺便检查下「Database」→「Network restrictions」,确保你的本地IP在允许访问的列表里(优先级稍低,但可以排除极端情况)
4. 试试调整Drizzle-Kit版本
有时候新版本的Drizzle-Kit和Supabase的Postgres版本会有兼容性小问题,你可以试试升级或降级版本:
# 升级到最新稳定版 yarn add drizzle-kit@latest # 或者降级到一个经过验证的稳定版本,比如0.20.x yarn add drizzle-kit@0.20.14
最后,执行正确的命令
注意Drizzle-Kit的push命令完整写法是drizzle-kit push:pg,别简写错了,确保你执行的是:
yarn drizzle-kit push:pg
如果还是搞不定,可以把你完整的drizzle.config.ts(隐去密码)和环境变量的验证结果贴出来,我再帮你深挖~
备注:内容来源于stack exchange,提问作者João Victor




