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

Node.js+Sequelize查询报错:未知列'id',模型路由均未定义

解决Sequelize中"Unknown column 'id' in 'field list'"错误(未使用id作为主键时)

这个问题我之前也碰到过——Sequelize有个默认的“潜规则”:它会自动假设你的数据库表有一个名为id的列作为主键,哪怕你根本没在模型里定义这个字段。当你调用findAll()这类查询方法时,它会悄悄把id加到查询的字段列表里,这就是为什么你明明没用到id却还是触发了这个错误。

解决方案:明确指定你的主键字段

只需要在你的ProspectType模型中,给ProspectTypeID字段加上primaryKey: true的配置,告诉Sequelize这才是表的主键,它就不会再去寻找默认的id列了。另外如果你的表没有createdAt和updatedAt这两个默认时间戳字段,最好也加上timestamps: false来避免额外的查询错误。

修改后的模型代码如下:

module.exports = function(sequelize, DataTypes) {
  return sequelize.define('ProspectType', {
    ProspectTypeID: {
      type: DataTypes.INTEGER(11),
      allowNull: false,
      primaryKey: true // 明确指定该字段为主键
      // 如果ProspectTypeID是自增字段,可以额外加上 autoIncrement: true
    },
    ProspectTypeName: {
      type: DataTypes.STRING(50),
      allowNull: true
    }
  }, {
    tableName: 'ProspectType',
    timestamps: false // 关闭默认时间戳查询(如果表中没有对应字段的话)
  });
};

验证修改

重启你的Node.js服务,再次访问/prospectType路由,这时候Sequelize会生成正确的查询语句,只包含你模型中定义的ProspectTypeID和ProspectTypeName字段,不会再出现id列的错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:24:31