typescript - TypeORM 抛出错误 'ER_CANT_CREATE_TABLE: Can\'t create table `test`.`comment`
问题描述
我试图通过使用 typeorm 来制作简单的数据库进行练习
实际上,我只是尝试为 typeorm 初学者复制一些简单的示例参考。但不知何故,我不断收到这个错误。
我的实体如下所示(普通实体只是 id、createdAt 和 updatedAt 等基本列的实体)
//./entity/User.ts
imports...
@Entity()
export class User extends Common {
@Column({ type: "varchar", length: 10 })
name: string;
@Column({ type: "int", width: 5 })
age: number;
//----------------realtionship----------------
@OneToMany(
type => Comment,
comment => comment.user
)
comments: Comment[];
}
//./entity/Comment.ts
imports...
@Entity()
export class Comment extends Common {
@Column({ type: "varchar", length: 150 })
comment: string;
//------------------Realtionship-----------------
@Column()
userId: number;
@ManyToOne(
type => User,
user => user.comments
)
@JoinColumn({ name: "userId" })
user: User;
// i think these thing causes Error but i don't know why
}
整个错误信息是
body-parser deprecated undefined extended: provide extended option src/app.ts:16:20
QueryFailedError: ER_CANT_CREATE_TABLE: Can't create table `test`.`comment` (errno: 150 "Foreign key constraint is incorrectly formed")
at ....
at ....
message: 'ER_CANT_CREATE_TABLE: Can\'t create table `test`.`comment` (errno: 150 "Foreign key constraint is incorrectly formed")',
code: 'ER_CANT_CREATE_TABLE',
errno: 1005,
sqlMessage: 'Can\'t create table `test`.`comment` (errno: 150 "Foreign key constraint is incorrectly formed")',
sqlState: 'HY000',
index: 0,
sql: 'ALTER TABLE `comment` ADD CONSTRAINT `FK_c0354a9a009d3bb45a08655ce3b` FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
name: 'QueryFailedError',
query: 'ALTER TABLE `comment` ADD CONSTRAINT `FK_c0354a9a009d3bb45a08655ce3b` FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION',
parameters: []
}
解决方案
我认为你是对的,试试这个:
@ManyToOne(() => User, user => user.comments)
@JoinColumn({ name: 'userId', referencedColumnName: 'id' })
user: User;
您缺少referencedColumnName。
推荐阅读
- mysql - 在选择中尝试一些子查询,总和的差异 - Doctrine 2.6.4
- vhdl - 在 VHDL 中,当作为参数传递给函数/过程时,无约束数组的索引范围默认为什么?
- laravel - Laravel Varbox 以编程方式获取草稿项目
- python - python pandas多索引如何向下移动行?
- bash - 根据上一个命令的退出状态更改 PS1v 提示的最后一个字符的颜色
- java - 将 Log4j 1.2.17 迁移到 2.12.1
- visual-studio - Xamarin 构建在 Windows docker 容器内失败(_ComputeAndroidResourcePaths 失败)
- video - 如何在 twilio 视频中创建/检索更详细的参与者信息?
- excel - 更改excel中的数字格式
- css - 在网站主页的特色图片内移动帖子标题