You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用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

火山引擎 最新活动