前言:记录错误,才疏学浅,不吝赐教
有图有真相
1、问题:
如图parent_id和sku_id 是唯一索引,报问提示唯一索引重复!
2、疑问:
是否真的重复?mysql是否设置区分大小写?
3、分析:
如图用户自定义skuId,ZC05、zc05是不同的,出问题是mysql是不区分大小写,导致重复!
4、解决:
需要设置区分大小
MySQL中的字符序名称遵从命名惯例:以字符序对应的字符集名称开头;
以_ci(表示大小写不敏感)、_cs(表示大小写敏感)或_bin(表示按编码值比较)结尾。
5、测试:
情况1、建表语句
CREATE TABLE `test_user` (
`user_id` int NOT NULL AUTO_INCREMENT,
`user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`password` int DEFAULT NULL,
`email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`sex` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`invalid` int DEFAULT NULL,
`createTime` datetime DEFAULT NULL,
`updateTime` datetime DEFAULT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
如果需要区分大小写,那么查询就是错误的
2、修改排序集,查询正常
`user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs DEFAULT NULL,
3、修改排序集,也正常
`user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,