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

使用TypeORM创建含@CreateDateColumn的表时出现SQL语法错误

解决思路

1. 适配MySQL 5.5的日期语法

MySQL 5.5不支持带微秒精度的datetime(6)语法,也不允许CURRENT_TIMESTAMP加精度参数,这是触发SQL解析错误的直接原因。需要给@CreateDateColumn指定兼容参数:

@CreateDateColumn({
  type: "datetime",
  precision: null, // 关闭微秒精度,适配MySQL 5.5
  default: () => "CURRENT_TIMESTAMP" // 显式指定符合旧版本的默认值语法
})
created_at: Date; // 推荐用Date类型,TypeORM会自动完成与数据库的类型映射

2. 规避MySQL保留关键字

order是MySQL的保留关键字,直接用作表名会存在语法冲突风险。修改实体的表名:

@Entity("orders") // 将表名改为非关键字的名称,比如orders
export class Order {
  // ... 其他字段定义保持不变
}

3. 验证修改后的SQL生成

调整后TypeORM会生成兼容MySQL 5.5的SQL语句:

CREATE TABLE `orders` (`id` int NOT NULL AUTO_INCREMENT, `first_name` varchar(255) NOT NULL, `last_name` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`)) ENGINE=InnoDB

该语句符合MySQL 5.5的语法规范,可正常执行。

额外提示

MySQL 5.5已停止官方维护,建议尽量升级到5.7及以上版本以获得更好的兼容性和安全性。如果暂时无法升级,后续使用@UpdateDateColumn等日期相关装饰器时,同样需要添加precision: null参数来适配旧版本语法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 03:07:21