TypeORM调用save方法更新字段时生成异常SQL报错如何解决
问题原因
根本原因是你定义Table对应的TypeORM实体类时,将data字段的类型错误配置为了数组类型(比如配置了type: "array"/type: "simple-array",或者TS类型写为string[])。
当你给数组类型的字段赋值字符串"qwer"时,TypeORM会把可迭代的字符串当做字符数组处理,遍历下标0、1、2、3对应值'q'、'w'、'e'、'r',生成了错误的UPDATE语句,才会出现Unknown column '1' in 'field list'的报错。
解决方案
- 方案1(推荐):修正实体类
data字段的类型配置,和数据库实际字段类型对齐即可,参考示例:
@Entity() export class Table { @PrimaryGeneratedColumn() id: number; // 错误写法示例(删除即可) // @Column("simple-array") // data: string[]; // 正确写法,和数据库字段类型匹配即可 @Column("varchar") data: string; }
- 方案2:如果你确实需要
data字段是数组类型,赋值时传入标准数组格式即可:
// 存单个字符串"qwer"到数组字段 result.data = ["qwer"]; await repository.save(result);
- 方案3(临时绕过):直接使用
update方法执行更新,跳过实体类型的序列化逻辑:
await repository.update({ id: 1 }, { data: "qwer" });
内容的提问来源于stack exchange,提问作者user15758006
相关产品推荐
相关产品推荐

