博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql唯一索引的一个小常识--Duplicate entry 'XXX' for key 'XXX'
阅读量:2502 次
发布时间:2019-05-11

本文共 1367 字,大约阅读时间需要 4 分钟。

概述

之前一直有个小误区,我以为mysql的唯一索引肯定是区分大小写的,然而实际上utf8字符集下,默认排序规则utf8_general_ci 情况下,是不区分大小写的。而在排序规则utf8_bin下是区分大小写的,这就有可能出现以下情况:之前字段是varchar  binary类型,即排序规则为utf8_bin,后来将该字段改回varchar的话,就会导致唯一键冲突错误

测试

mysql> show create table xx\G

*************************** 1. row ***************************
       Table: xx
Create Table: CREATE TABLE `xx` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(100) NOT NULL,
  `name1` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`name`),
  UNIQUE KEY `name1` (`name1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

mysql> select * from xx;

Empty set (0.00 sec)
mysql> insert into xx(id,name,name1) values(1,'jiang','jiang');
Query OK, 1 row affected (0.00 sec)
mysql> insert into xx(id,name,name1) values(1,'Jiang','jason');
ERROR 1062 (23000): Duplicate entry 'Jiang' for key 'PRIMARY'
mysql> insert into xx(id,name,name1) values(1,'Jiang1','jason');
Query OK, 1 row affected (0.00 sec)
mysql> insert into xx(id,name,name1) values(1,'Jiang2','Jason');
Query OK, 1 row affected (0.00 sec)

mysql> select * from xx;

+------+--------+-------+
| id   | name   | name1 |
+------+--------+-------+
|    1 | jiang  | jiang |
|    1 | Jiang1 | jason |
|    1 | Jiang2 | Jason |
+------+--------+-------+
3 rows in set (0.00 sec)
mysql> alter table xx modify name1 varchar(100);
ERROR 1062 (23000): Duplicate entry 'Jason' for key 'name1'

转载地址:http://fcbgb.baihongyu.com/

你可能感兴趣的文章
Python OOP总结
查看>>
如何将uClinux固化到Flash内
查看>>
Daily Scrum M1 10-11 [含Preview版截图]
查看>>
nodejs+express开发blog(1)
查看>>
MySQL存储引擎
查看>>
给你一个笑脸
查看>>
前端练手项目
查看>>
JS 用 prototype 扩展实现string过滤空格
查看>>
HTML布局记录
查看>>
利用背景图片制作轮播(手自一体化)
查看>>
(wp8.1开发)添加数据(SQLite)库到app
查看>>
160809329 仲兆鹏 3
查看>>
启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!
查看>>
【dog与lxy】8.25题解-land
查看>>
C#操作SQLServer的一个简单封装
查看>>
简化版开源TCP/IP协议栈----UIP
查看>>
怎样在一个HTML中嵌入另一个HTML页面(iframe标签用法)
查看>>
linux terminal theme
查看>>
bzoj1606 [Usaco2008 Dec]Hay For Sale 购买干草
查看>>
bzoj5127[Lydsy12月赛]数据校验
查看>>