函数批量插入报错ERROR 1062 (23000): Duplicate entry ‘x‘ for key ‘y.PRIMARY‘

本文探讨了在使用MySQL函数对主键进行加1操作时遇到的ERROR1062,原因在于隐式类型转换。通过拼接concat和cast方法修复,并解释了如何避免此类问题,提供了解决方案和实例代码。

问题

测试时候发现,如果直接执行Insert语句是完全没有问题的,但是一旦使用mysql函数对insert语句中的主键做+1操作,就开始ERROR 1062;

数据库版本

表结构 

直接插入操作 - 正常

mysql函数批量插入操作 -ERROR 1062

错误原因

set t_grpid = t_grpid +1;

 是的没错,就仅仅是因为这一句,忘了mysql的隐式转换了……;

 当我们对varchar执行+1操作的时候,mysql会先将字符串转为数字类型(转成double:-1.7976931348623157E+308~-2.2250738585072014E-308),在执行+操作;

修改:方式1-拼接concat 


delimiter //
create function insertUser() returns char(1)
begin

declare t_grpid varchar(20);
declare t_tmp varchar(20);
declare t_tmp2 varchar(20);

set t_grpid = '700600000000001112';
set t_tmp = '70060000000000';
set t_tmp2 = '1112';

while t_grpid <= '700600000000001121' do
	insert into crbt_group values(t_grpid,'123', '01');
	set t_tmp2 = t_tmp2+1;
	set t_grpid = concat(t_tmp,t_tmp2);

end while;

return "1";
end //
delimiter ;

修改后运行结果为:

修改:方式2-cast

🚀 分播机数据同步服务已启动... 🔍 开始检查分播机 Line1 (192.168.110.56)... ✅ 分播机 Line1 (192.168.110.56) 网络通畅 ✅ 分播机 Line1 的数据库文件正常: Y:\sorting.db [TRUNCATE] 表 AI_AppOperationLogs 删除了 0 条 creationtime >= '2025-09-18 07:05:44' 的 记录,最小ID=None ✅ 成功清理表 AI_AppOperationLogs 最近3小时数据 📥 从 AppOperationLogs 读取到 5300 条数据 [ERROR] 同步表 AppOperationLogs 时发生异常: 1062 (23000): Duplicate entry '892944912671055872' for key 'ai_appoperationlogs.PRIMARY' ⚠️ 同步表 AppOperationLogs 失败 [TRUNCATE] 表 AI_AppReportRecords 删除了 0 条 creationtime >= '2025-09-18 07:05:46' 的 记录,最小ID=None ✅ 成功清理表 AI_AppReportRecords 最近3小时数据 📥 从 AppReportRecords 读取到 309 条数据 [ERROR] 同步表 AppReportRecords 时发生异常: 1062 (23000): Duplicate entry '892951124343005184' for key 'ai_appreportrecords.PRIMARY' ⚠️ 同步表 AppReportRecords 失败 [TRUNCATE] 表 AI_AppSortingTaskBoxes 删除了 0 条 creationtime >= '2025-09-18 07:05:46' 的记录,最小ID=None ✅ 成功清理表 AI_AppSortingTaskBoxes 最近3小时数据 📥 从 AppSortingTaskBoxes 读取到 54232 条数据 [ERROR] 同步表 AppSortingTaskBoxes 时发生异常: 1062 (23000): Duplicate entry '892935539257253888' for key 'ai_appsortingtaskboxes.PRIMARY' ⚠️ 同步表 AppSortingTaskBoxes 失败 [TRUNCATE] 表 AI_AppSortingTaskImages 删除了 0 条 creationtime >= '2025-09-18 07:05:55' 的记录,最小ID=None ✅ 成功清理表 AI_AppSortingTaskImages 最近3小时数据 📥 从 AppSortingTaskImages 读取到 157921 条数据 [ERROR] 同步表 AppSortingTaskImages 时发生异常: 1062 (23000): Duplicate entry '892927163089559552' for key 'ai_appsortingtaskimages.PRIMARY' ⚠️ 同步表 AppSortingTaskImages 失败 [TRUNCATE] 表 AI_AppSortingTaskItems 删除了 0 条 creationtime >= '2025-09-18 07:06:24' 的记录,最小ID=None ✅ 成功清理表 AI_AppSortingTaskItems 最近3小时数据 📥 从 AppSortingTaskItems 读取到 2815 条数据 [ERROR] 同步表 AppSortingTaskItems 时发生异常: 1062 (23000): Duplicate entry '892951322758750209' for key 'ai_appsortingtaskitems.PRIMARY' ⚠️ 同步表 AppSortingTaskItems 失败 [TRUNCATE] 表 AI_AppSortingTasks 删除了 0 条 creationtime >= '2025-09-18 07:06:25' 的记录,最小ID=None ✅ 成功清理表 AI_AppSortingTasks 最近3小时数据 📥 从 AppSortingTasks 读取到 312 条数据 [ERROR] 同步表 AppSortingTasks 时发生异常: 1062 (23000): Duplicate entry '892951322758750208' for key 'ai_appsortingtasks.PRIMARY' ⚠️ 同步表 AppSortingTasks 失败 [TRUNCATE] 表 AI_AppSortingTaskSkus 删除了 0 条 creationtime >= '2025-09-18 07:06:26' 的记录,最小ID=None ✅ 成功清理表 AI_AppSortingTaskSkus 最近3小时数据 📥 从 AppSortingTaskSkus 读取到 65618 条数据 ✅ 成功向 AI_AppSortingTaskSkus 插入 65618 条数据 🔴 分播机 Line1 同步失败
09-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值