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

Sequelize执行create操作报updated_at列不存在但未定义该字段问题

错误产生原因

Sequelize 模型默认开启自动时间戳功能,会自动维护 createdAt、updatedAt 两个时间字段,无需开发者在属性列表中显式声明。当前模型配置开启了 underscored: true,框架会自动将驼峰命名的字段转为下划线格式映射数据库,因此执行写入操作时会默认尝试写入 updated_at 字段,但 user_search 数据表中实际不存在该字段,最终触发字段不存在的报错。

修复方案

根据业务需求选择对应方案即可:

  • 不需要记录数据更新时间:在模型配置项(sequelize.define的第三个参数)中新增updatedAt: false,禁用updatedAt字段的自动处理逻辑,保留已配置的createdAt自动维护能力,修改后的配置段如下:
{
  tableName: 'user_search',
  underscored: true,
  updatedAt: false,
}
  • 需要记录数据更新时间:直接为数据库user_search表新增updated_at字段,字段类型与现有created_at保持一致(TIMESTAMP类型),可设置默认值为CURRENT_TIMESTAMP,如需数据更新时自动刷新时间可追加ON UPDATE CURRENT_TIMESTAMP属性。新增字段后无需修改模型代码,Sequelize会自动完成字段映射。
  • 需要完全自主控制所有时间字段:在模型配置中新增timestamps: false,关闭全局自动时间戳功能。注意该模式下每次写入、更新数据时,需要手动维护created_at等时间字段的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:15:38