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

学习Drizzle遇TS2339错误:UserTable不存在于DrizzleTypeError类型

解决Drizzle的TS2339错误:Property 'UserTable' does not exist on type 'DrizzleTypeError'

问题根源

错误提示明确指出缺少schema泛型参数——创建数据库实例时,没有把定义的表结构传递给Drizzle,导致TypeScript无法识别db.query下的表对象。

修复步骤

1. 修正db.ts的数据库实例配置

确保调用drizzle函数时,传入schema作为泛型和配置参数:

import { drizzle } from 'drizzle-orm/mysql2';
import mysql from 'mysql2/promise';
import { UserTable } from './schema/schema';

// 初始化数据库连接池(根据你的实际配置修改)
const pool = mysql.createPool({
  host: 'localhost',
  user: 'root',
  password: 'your-password',
  database: 'your-database-name',
});

// 关键:传入schema让Drizzle识别表结构
export const db = drizzle(pool, { schema: { UserTable } });

2. 修正查询语句的错误用法

你当前用的with是用于关联子表的,单表查询应该用columns指定返回字段:

import { db } from "./db/db";
import { UserTable } from "./db/schema/schema";

async function main(){
    const result = await db.query.UserTable.findMany({
        columns: { // 替换with为columns
          name: true      
        },
      });

      console.log(result)
}

main()

额外说明

如果有多个表,只需在schema配置里添加所有表对象即可,例如:

export const db = drizzle(pool, { schema: { UserTable, PostTable, CommentTable } });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 20:15:04