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

使用Apollo GraphQL+TypeORM操作PostgreSQL出现Oct附近语法错误如何解决

报错根因

这个错误是TypeORM生成的INSERT SQL语句中存在未转义的原生JS日期字符串导致的,PostgreSQL解析SQL时把日期字符串里的月份缩写Oct识别为未知关键字,触发语法错误。你贴的resolver代码逻辑没有问题,问题出在Post实体类的字段定义上。

常见的错误实体写法

你的Post实体中大概率存在手动定义日期字段、默认值直接写死JS日期对象的逻辑,示例如下:

// 错误写法
@Column({ default: new Date() })
createdAt: Date;

这种写法会在服务启动时就执行一次new Date()得到一个固定的JS日期对象,TypeORM拼接SQL时会直接把该日期对象的toString结果(比如Fri Oct 13 2023 14:30:00 GMT+0800)直接拼入SQL,没有添加单引号转义,最终触发语法错误。

修复方案

选择以下任意一种方案修改你的Post实体类即可:

  • 方案1:使用TypeORM内置的日期自动填充装饰器,无需手动配置默认值
import { CreateDateColumn, UpdateDateColumn } from "typeorm";

// 替换你原有手动写的日期字段定义
@CreateDateColumn()
createdAt: Date;

@UpdateDateColumn()
updatedAt: Date;
  • 方案2:手动指定默认值为数据库层面的时间函数,避免JS层面生成固定日期
@Column({ default: () => 'CURRENT_TIMESTAMP' })
createdAt: Date;
验证方法

你可以在TypeORM配置中开启logging: true,控制台会打印出生成的完整SQL语句,就能看到拼错的日期内容,方便定位校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:27:03