使用typeorm对接mariadb插入数据报ER_PARSE_ERROR语法错误如何解决?
问题定位
你执行的SQL语句存在语法错误,错误点位于VALUES子句中synonyms字段对应的取值位置为空:
观察你报错日志里的SQL片段:
INSERT INTO `Anime`(..., `en_title`, `synonyms`, `synopsis`, ...) VALUES (DEFAULT, '11111', 'アナザー', 'Another', 'Another', , 'In 1972, ...')
en_title对应的值'Another'之后直接出现了连续两个逗号,中间没有填充任何取值(既没有写NULL也没有写空字符串''),导致MariaDB解析SQL时直接失败,报错位置就是连续逗号之后第一个字符串的起始位置,和你收到的错误提示完全吻合。
修复方案
问题出在TypeORM的实体赋值逻辑:
- 检查你保存
Anime实体时的代码,确认synonyms字段是否出现了未赋值、取值为undefined的情况 - 如果
synonyms字段允许为空的前提下,两种修复方式可选:- 在TypeORM实体定义中给
synonyms字段设置默认值,示例代码如下:
import { Column, Entity } from 'typeorm'; @Entity() export class Anime { // 其他字段定义 @Column({ nullable: true, default: null }) synonyms: string; }- 在数据保存前手动判空处理,当
synonyms取值为空时,手动赋值为null或者空字符串''即可。
- 在TypeORM实体定义中给
内容的提问来源于stack exchange,提问作者Hadezuka
相关产品推荐
相关产品推荐

