mysql - TypeORM 与 UUID 同步问题(MySQL)
问题描述
我在使用 MySQL 驱动程序上的 UUID PrimaryGeneratedColumns 的 TypeORM 上的同步设置时遇到了问题。似乎每次应用程序加载它都会尝试重新索引,因此它会删除 id 列并尝试再次添加它。问题是因为它是 UUID,对于 MySQL,列类型是 varchar(36) NOT NULL PRIMARY KEY。因此,由于未设置 UUID,因此我们遇到了键 'PRIMARY' 的重复条目 ''。
要重新创建问题,您可以这样做:
typeorm init --name MyProject --database mysql
编辑您的 User.ts 实体以将主键更改为 UUID。从“typeorm”导入{实体,PrimaryGeneratedColumn,列};
@Entity()
export class User {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column()
firstName: string;
@Column()
lastName: string;
@Column()
age: number;
}
确保在 ormconfig.json 中将同步设置为 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: []
解决方案
推荐阅读
- sql - 如何在 where 子句中为子查询使用别名
- python - 更改稀疏矩阵行的随机选择条目的值
- android - android片段覆盖onCreateAnimation
- arguments - nagios 命令参数通过本地 check_nrpe 命令或远程 nrpe 代理合并到 nrpe 命令名称中
- postgresql - 无效操作:在子计划目标列表中找不到变量 - RedShift
- powershell - 在组合框中选择一个项目一次
- python - 使用python匹配两个csv文件之间的列值时输出错误
- android - Recycler 视图如何绘制单独的行
- python - 创建一个游戏,其中计算机通过 <、> 或 = 的输入来猜测一个值
- codenameone - 刷新 cn1lib 文件后组件不工作