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

TypeORM中常规INSERT INTO语句执行失败问题求助

解决TypeORM中INSERT语句执行失败的问题

错误原因分析

  • 第一个错误:SQL里双引号是用来标识表名、列名这类标识符的,你用"Hi"包裹字符串值,数据库会把它当成列名去查找,所以报错“column 'Hi' does not exist”。
  • 第二个错误:TypeORM的queryRunner.query不支持通过注释传递参数,你手动加的--PARAMETERS["Hi", "Bye"]完全无效,参数必须通过方法的第二个参数传入,因此会提示“There is no parameter $1”。

正确写法

写法1:单引号包裹字符串值(适用于简单场景,注意SQL注入风险)

await queryRunner.query('INSERT INTO "table"(column1,column2) VALUES (\'Hi\',\'Bye\')');

或者用模板字符串简化转义:

await queryRunner.query(`INSERT INTO "table"(column1,column2) VALUES ('Hi','Bye')`);

写法2:参数化查询(推荐,彻底避免SQL注入)

TypeORM的queryRunner.query支持第二个参数传递参数数组,PostgreSQL用$1、$2作为占位符,其他数据库可能用?,根据你使用的数据库调整:

await queryRunner.query(
  'INSERT INTO "table"(column1,column2) VALUES ($1,$2)',
  ["Hi", "Bye"]
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:15:35