解决MYSQL批量插入时,UUID_SHORT出现了1062 -Duplicate entry ‘xxx‘ for key ‘PRIMARY‘

文章讲述了在遇到MySQL使用UUID_SHORT进行批量插入时出现主键重复错误的问题。提供了两种解决方案:一是先在测试环境生成数据,转换为SQL语句在生产环境执行;二是通过自定义SQL变量动态生成主键,避免主键冲突。这两种方法可以在无法直接访问生产数据的情况下解决问题。
摘要由CSDN通过智能技术生成

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)执行成功截图:

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值