【发布时间】:2020-05-06 16:01:03
【问题描述】:
我正在使用 TypeORM 和 NestJs 来处理现有的 MySql 数据库。我必须将记录插入到一个共享表中,该表具有自动递增的主键。由于表是共享的,我已经关闭了同步。
当我使用 @PrimaryGeneratedColumn 装饰器设置我的 TypeORM 实体时,我收到一条错误消息,指出该列“没有默认值”。如果我将装饰器更改为@Column,则会收到关于没有主键的错误。
谁能告诉我应该如何设置我的 TypeORM 实体,以便我可以将一条记录插入到具有自动递增列的表中,其中同步已关闭?
更新
这里是 MySql 表 DDL 的摘录:
CREATE TABLE IF NOT EXISTS tIntegrationItem (
IntegrationItemID mediumint AUTO_INCREMENT NOT NULL,
Description varchar(200) NOT NULL,
CreatedDateTime dateTime NOT NULL,
PRIMARY KEY (IntegrationItemID)
) ENGINE=InnoDB;
这是实体的摘录:
@Entity({ name: "tIntegrationItem" })
export class IntegrationItem {
@PrimaryGeneratedColumn()
integrationItemId : number;
@Column()
description : string;
@Column()
createdDateTime : Date = new Date();
}
这是我收到的错误:
[Nest] 26248 - 2020 年 1 月 22 日下午 2:18:43 [ExceptionsHandler] ER_NO_DEFAULT_FOR_FIELD:字段“IntegrationItemID”没有默认值 +18075ms QueryFailedError: ER_NO_DEFAULT_FOR_FIELD: 字段 'IntegrationItemID' 没有默认值
【问题讨论】:
-
如需更详细的检查,请添加您现有表的架构描述、实体类和错误日志。