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

SQL如何返回数据表中不存在的列数据?

解决Sequelize生成SQL返回不存在列的问题

问题分析

你生成的INSERT语句中,RETURNING子句包含了数据表Patrons不存在的UserId列,这会直接触发数据库报错。问题根源在Sequelize的模型配置或数据创建的代码逻辑中。

解决方案

1. 检查并修正模型定义

确认Patrons模型是否误定义了UserId字段,或是在关联配置(如belongsTo/hasOne)时自动生成了该多余外键。如果是关联导致的,明确指定正确的外键列(你的表中为donaturId):

// 示例:修正关联配置
Patrons.belongsTo(Donatur, {
  foreignKey: 'donaturId', // 指定表中存在的外键列名
  as: 'donatur' // 可选:设置别名,避免自动生成错误字段
});

2. 手动控制CREATE方法的返回字段

调用create方法时,通过attributes参数明确指定需要返回的列,排除不存在的UserId:

// 正确的create调用示例
const newPatron = await Patrons.create({
  name: '示例名称',
  jumlah: 100,
  donaturId: 1,
  category: '示例分类'
}, {
  attributes: ['id', 'name', 'jumlah', 'donaturId', 'category', 'createdAt', 'updatedAt']
});

3. 调整模型的默认返回范围

如果模型设置了defaultScope,检查其中是否包含UserId,将其移除:

const Patrons = sequelize.define('Patrons', {
  // 字段定义...
}, {
  defaultScope: {
    attributes: ['id', 'name', 'jumlah', 'donaturId', 'category', 'createdAt', 'updatedAt']
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:40:34