启动Drizzle Studio报错:无法推断restaurantsTable.categories关系
解决Drizzle Studio关系推断错误:
Error: There is not enough information to infer relation "restaurantsTable.categories" 你的错误根源是categoryTable的关联关系配置错误:categories表中的restaurant_id字段本应关联restaurants表的id,但你在categoryTableRelations里错误地将其关联到了menuTable,导致Drizzle无法识别restaurants和categories之间的关联关系,进而触发推断失败的错误。
修正后的schema.ts关键代码
export const restaurantsTable = pgTable("restaurants", { id: serial("id").primaryKey(), [...] }); export const restaurantTableRelations = relations(restaurantsTable, ({ one, many }) => ({ menu: many(menuTable), categories: many(categoryTable, { relationName: 'restaurant_categories' }), })); export const categoryTable = pgTable("categories", { id: serial("id").primaryKey(), // 显式添加外键引用,帮助Drizzle明确关联关系 restaurant_id: integer('restaurant_id').notNull().references(() => restaurantsTable.id), }); export const categoryTableRelations = relations(categoryTable, ({ one }) => ({ restaurant: one(restaurantsTable, { fields: [categoryTable.restaurant_id], references: [restaurantsTable.id], // 关系名必须和restaurantTableRelations中的定义完全一致 relationName: 'restaurant_categories' }) }));
核心改动说明
- 给
categoryTable的restaurant_id字段添加显式外键约束,明确关联restaurantsTable的主键id - 将
categoryTableRelations的关联目标从menuTable改为restaurantsTable,匹配数据逻辑 - 确保双向关联的
relationName完全一致,Drizzle依靠这个标识识别同一组关联关系
内容的提问来源于stack exchange,提问作者Sowdowdow
相关产品推荐
相关产品推荐

