mysql 主键重复(mysql主键重复报错1062)

mysql 主键重复(mysql主键重复报错1062)问题背景 由于每天都需要对公司的数据进行一个统计 公司工作人员在对账的时候 发现有一天没有查到记录 于是我就把程序统计调整到没有记录的那天重新统计入库 奇怪的事情发生了 数据插入不进去 唯一索引报 Duplicate entry for key xxx 的错误 解决过程 首先我去表中看了 唯一索引的确没有重复 为了排除其他数据的影响 直接将表中数据清空了



问题背景

由于每天都需要对公司的数据进行一个统计,公司工作人员在对账的时候,发现有一天没有查到记录,于是我就把程序统计调整到没有记录的那天重新统计入库。奇怪的事情发生了,数据插入不进去,唯一索引报Duplicate entry for key xxx的错误。

解决过程

  1. 首先我去表中看了,唯一索引的确没有重复
  2. 为了排除其他数据的影响,直接将表中数据清空了(当然是本地环境),依然报错
  3. 打断点,输出,对重复的那个key进行debug,看数据统计是否有有重复的,控制台指打印出一次,debug也只停留一次。

进行上面三个操作之后,并没有任何卵用,这就让我很纳闷了。虽然我们进行插入之前可以判断是否已经存在该条记录,存在就不入库,不存在就入库,但这显然不是根本原因所在。程序没有看到任何问题,接下来就只能直接操作数据库,进行查询了。报的是唯一索引重复了,我就查询那个唯一索引,好家伙,神奇的事情发生了。

我查询的是全部小写的字符串"titapotp",结果如下图所示:
在这里插入图片描述
这里问题的根本原因就自己出来了,mysql查询的时候字符串是不区分大小写的😮‍💨

解决方式

所以解决办法就是查询的时候强制区分大小写。

有以下几个方法解决:

1. 让mysql查询时区分大小写
 
2.在建表时加以标识
 

或者

 

因为我的表已经是建立的了,不必去删除重建,所以只要将account那个字段改为二进制即可。

平时使用的数据库可视化工具navicat居多,所以我直接在navicat进行如下操作:
在这里插入图片描述
直接勾选二进制即可,这样查询的时候会强制区分大小写了。还有一种就是将排序规制设置为二进制的,如下图所示:
在这里插入图片描述

其实两个都是一样的,勾选为二进制点击保存之后排序规则直接变成了二进制的。如下图示:
在这里插入图片描述
进行如下操作之后,再次查询就OK了。

在这里插入图片描述

编程小号
上一篇 2025-03-14 20:21
下一篇 2025-02-27 13:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/28480.html