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

Node.js项目中SQL出现updated_at相关语法错误如何修复?

问题诱因

这个SQL语法错误由TypeORM生成更新语句的逻辑缺陷导致,核心触发原因有两个:

  • 执行更新操作时,仅需要更新系统自动维护的updated_at字段,没有显式传入任何业务更新字段,旧版本TypeORM生成SET语句时会在开头多出一个多余的逗号,直接拼接updated_at赋值逻辑,导致SQL语法非法
  • 你使用的updated_at字段为带6位微秒精度的时间类型,TypeORM默认生成的CURRENT_TIMESTAMP未携带精度参数,与MariaDB的字段要求不匹配,也会触发语法或兼容错误
修复方案

你可以根据自己的使用场景选择以下任意一种方案:

  • 显式传入updated_at字段赋值,避免空更新对象
    执行更新时不要传入空的更新参数,手动指定updated_at的值即可,示例代码:
    await yourRepository.update(
      { id: In([3]) },
      { updated_at: new Date() }
    )
    
  • 调整字段注解配置,适配MariaDB时间精度要求
    修改@UpdateDateColumn的配置,显式指定字段类型、精度和自动更新规则:
    @CreateDateColumn({
      type: 'timestamp',
      precision: 6,
      default: () => 'CURRENT_TIMESTAMP(6)'
    })
    created_at: Date
    
    @UpdateDateColumn({
      type: 'timestamp',
      precision: 6,
      default: () => 'CURRENT_TIMESTAMP(6)',
      onUpdate: 'CURRENT_TIMESTAMP(6)'
    })
    updated_at: Date
    
  • 升级TypeORM到最新稳定版
    该空更新生成多余逗号的问题已经在后续版本修复,升级TypeORM即可从底层解决问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 03:36:03