TypeORM与UUID同步问题(MySQL)

时间:2019-01-07 00:48:49

标签: mysql typeorm

我在TypeORM上与MySQL驱动程序上的UUID PrimaryGeneratedColumns进行同步设置时遇到问题。似乎每次应用程序加载时,它都会尝试重新索引,因此它将删除id列并尝试再次添加它。问题是,由于它是UUID,因此对于MySQL,列类型为varchar(36)NOT NULL PRIMARY KEY。因此,由于未设置UUID,因此我们遇到了键“ PRIMARY”的重复条目“”。

要重新创建问题,您可以这样操作:

typeorm init --name MyProject --database mysql

编辑您的User.ts实体,以将主键更改为UUID。 从“ typeorm”导入{Entity,PrimaryGeneratedColumn,Column};

@Entity()
export class User {

    @PrimaryGeneratedColumn('uuid')
    id: string;

    @Column()
    firstName: string;

    @Column()
    lastName: string;

    @Column()
    age: number;

}

确保在ormconfig.json中将syncyize设置为true。 启动应用程序,它将插入示例用户。重新启动应用程序并同步将运行,并尝试删除并重新添加该列并给出错误。

  message: 'ER_DUP_ENTRY: Duplicate entry \'\' for key \'PRIMARY\'',
  code: 'ER_DUP_ENTRY',
  errno: 1062,
  sqlMessage: 'Duplicate entry \'\' for key \'PRIMARY\'',
  sqlState: '23000',
  index: 0,
  sql:
   'ALTER TABLE `user` ADD `id` varchar(36) NOT NULL PRIMARY KEY',
  name: 'QueryFailedError',
  query:
   'ALTER TABLE `user` ADD `id` varchar(36) NOT NULL PRIMARY KEY',
  parameters: []

0 个答案:

没有答案