原创-转载请注明出处

问题描述

Mysql表A里的字段Name(类型为Varchar),设置了Unique约束。

如果表里已经存在Name为"a"的记录时,如果此时再insert一条Name为“a ”的数据时,数据库就汇报duplicate的错。

在数据库中检查发现

select * from table where name = "a";

select * from table where name = "a ";

检索出来的结果竟然是一样的!都是"a"这条记录。

错误分析

因为在Mysql中,Varchar在进行字符串比较时,会去掉空格,所以“a”和“a ”在select的时候都视为"a"。

解决方法

将Name字段的类型改为Varbinary

结论

Varchar   在查询的时候会去掉最右边的空格,因此在进行字符串比较时,只保留了除最右边的空格剩下的字节。

Varbinary在查询的时候也不会丢弃任何字节,在比较的时候,所有的字节都是有效的。

遇到这个问题的时候,首先想到的是修改unique约束,但是网上全部都是要修改就删掉约束重建的(我也是试着删了重建,但很莫名的删不掉?不得不另寻方法)。相信也有人遇到类似的问题,但至少我没有找到一个真的好好解决问题的文章。

如果文章中有什么不对的不全的还望指出。

Mysql Unique Key 报错 Duplicate相关推荐

  1. MySQL ALTER TABLE报错Duplicate entry 'xxx' for key 'PRIMARY'解决方法

    在MySQL中执行加字段等操作时可能会报Duplicate entry 'xxx' for key 'PRIMARY'的错,例如: mysql> alter table test add aa ...

  2. navicat 手动设置索引unique,报错duplicate entry for key

    错误场景: 仅限于手动设置unique时. 在navicat中根据流程: 右键表名 -> 设计表 -> 索引 -> 设置某列为unique -> 保存 错误图示: 错误原因: ...

  3. mysql 唯一性约束报错_怪异的MySQL Online DDL报错Duplicate entry

    今天线上执行Online DDL的时候发现一个奇怪的报错,觉得比较意义,遂整理如下.线上数据库版本:percona server 5.7.14 报错现场:每次执行的时候重复报错记录都不一样 mysql ...

  4. mysql 报错 Duplicate entry ‘xxx‘ for key ‘字段名‘

    有时候对表进行操作,例如加唯一键,或者插入数据(已经有唯一键),会报错 Duplicate entry...for key...原因是primary key(主键)或unique key(唯一键)的值 ...

  5. postgres 保存报错duplicate key value violates unique constraint...解决方案_亲测有效

    postgres 保存报错duplicate key value violates unique constraint 解决方案 原因分析: 表名: A 表A的主键id 是由序列 x$seq 生成的 ...

  6. kettle使用mysql作为资源库报错 创建资源库时只有25张表,原本应该46张表。

    kettle使用mysql作为资源库报错 创建资源库时只有25张表,原本应该46张表. 连用户表都没有 ,导致连 默认的 admin和guest都无法登陆自己的资源库!!!! 问题是 SQL语句里边使 ...

  7. 【Unity导入MySql.Data.dll报错】

    Unity导入MySql.Data.dll报错 错误的起因,想用Unity对MySQL操作.操作参考了勤诚勇毅的帖子 链接: https://blog.csdn.net/qq_43333567/art ...

  8. mysql安装教程博音网_RTSP视频平台EasyNVR使用mysql数据源启动报错unknow drivermysql优化...

    原标题:RTSP视频平台EasyNVR使用mysql数据源启动报错unknow driver"mysql"优化 我们上一篇讲了TSINGSEE青犀视频开发的视频平台默认都是使用的s ...

  9. mysql表恢复报错binlog_mysql数据恢复,利用binlog2sql快速闪回

    一.环境设置 1.mysql配置中首先要开启binlog,如没开启,在my.conf 下配置如下参数: server-id = 1 log_bin = /var/log/mysql/mysql-bin ...

最新文章

  1. Docker入门系列8
  2. 一次生产事故的优化经历
  3. java运行效率优化_如何优化JAVA代码及提高执行效率
  4. FFMPEG源码分析(二)
  5. 第十一章项目沟通管理重点--转载
  6. Arcgis10安装说明
  7. python做的大型游戏_Python实现数据量较大的生命游戏
  8. Notification使用详解之四:由后台服务向Activity发送进度信息
  9. iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9443 -j DNAT
  10. Android 最新原生定位折腾总结科普
  11. 在c语言中逻辑或运算符失身额,我的Fortran基本用法小结【转载】
  12. 阿斯克码表ACSII对照表
  13. 【win7提速新方法:禁用禁用eSATA接口】
  14. Oracle临时表详解
  15. 一个公布每天全球被黑网站的站点
  16. [C语言]兔子生崽问题:兔子生崽问题。假设一对小兔的成熟期是一个月,即一个月可长成成兔,那么如果每对成兔每个月都可以生一对小兔,一对新生的小兔从第二个月起就开始生兔子。试问从一对新生的兔子开始,一年以
  17. Pictures of Ascii Art
  18. php自学建议_php自学提升进阶路线
  19. 数据中心解决方案之灾备方案设计(上)
  20. HTTPS单向认证双向认证

热门文章

  1. 三菱fx2n64mr说明书_三菱FX2N-64MR-UA1/UL使用说明书FX2N-64MR-UA1/UL手册 - 广州凌控
  2. FinClip | 2022 年 10月产品大事记
  3. 用Python绘制奥运五环
  4. WebDAV将会在公共领域取代FTP
  5. 叶史瓦大学计算机专业,叶史瓦的大学排名
  6. 我的暗影精灵BIOS做过的更改
  7. [SDOI2009][BZOJ 1226]学校食堂
  8. wpf 音频波形图_wpf波形图 - IT屋-程序员软件开发技术分享社区
  9. 求近似数最值_求近似数的方法
  10. 与,或,非,异或,左移,右移,位运算符号总结