首页 > 解决方案 > 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: []
}

标签: typescripttypeorm

解决方案


我认为你是对的,试试这个:

 @ManyToOne(() => User, user => user.comments)
 @JoinColumn({ name: 'userId', referencedColumnName: 'id' })
 user: User;

您缺少referencedColumnName。


推荐阅读