我正在尝试使用TypeORM删除依赖于表file
的{{1}}表上的记录。
实际上我收到此错误
“对表“文件”进行更新或删除违反了对表“文件设备”上的外键约束“ FK_4dcd99898oij89898909c2603””
这是我声明表的方式:
fileDevice
和fileDevice
export class File {
@PrimaryGeneratedColumn()
id: number;
@Column({ nullable: false })
idFonc: number;
@Column({ nullable: false })
version: number;
@Column('varchar', { length: 100, nullable: false })
filename: string;
@Column({ nullable: true })
lastModified: Date;
@Column({ nullable: false })
device: boolean;
@Column({ nullable: false })
typeId: number;
@ManyToOne(type => Type, { nullable: false })
@JoinColumn({ referencedColumnName: 'id' })
type: Type;
@OneToMany(type => FileDevice, filedevice => filedevice.file)
fileDevice: FileDevice[];
}
使用TypeORM,我删除了几个文件:
export class FileDevice {
@PrimaryGeneratedColumn()
id: number;
@ManyToOne(type => File, f => f.fileDevice, {
nullable: false,
onDelete: 'CASCADE',
})
file: File;
@Column('varchar', { length: 100, nullable: false })
deviceid: string;
}
我收到上面提到的错误。
我尝试将this.fileRepository.remove(filesListToDelete);
添加到实体的定义中:
onDelete: 'CASCADE'
但是我仍然有同样的错误。
我应该首先在表@OneToMany(type => FileDevice, filedevice => filedevice.file, {
onDelete: 'CASCADE',
})
fileDevice: FileDevice[];
上删除,然后在fileDevice
表上删除filesList
吗?
答案 0 :(得分:0)
如果需要,请在FileDevice
迁移文件中添加此文件。 注意 onDelete: 'CASCADE'
在迁移文件中非常需要。
foreignKeys: [
{
referencedTableName: 'file',
referencedColumnNames: ['id'],
columnNames: ['file'],
onDelete: 'CASCADE',
}
]