1.问题描述
MYSQL批量插入时,使用UUID_SHORT出现了1062 -Duplicate entry ‘xxx’ for key ‘PRIMARY’
2.场景描述:
在测试环境可以正常插入,但是去到生产就失败了,这种需要怎么处理?
2.1方式一:
答:如果批量插入的数据,可以拿到的话,可以尝试先在测试环境生成数据后,转为SQL语句,并拿到生产去执行,这样就可以解决该问题。如下图:通过工具将在测试环境生成的数据,导为SQL,并到生产执行。
2.2方式二:
答:大多数时候,我们都是不可能接触到生产环境的数据的,但是出现【主键重复】会导致我们无法完成当前任务,那就可以考虑用以下方法,也推荐用该方法,而不是2.1。
(1)SQL如下,主要自定义了一个名为’number’的变量,每次insert之前,主键id值都+1
set @number = 1;
INSERT INTO '你的表名'
SELECT @number := @number+1 AS id,CONCAT('解决MySQL UUID_SHORT批量生成主键重复问题:',u.name)
FROM '你的表名' AS `u`
(2)原表数据:
(3)执行成功截图: