坑一 字符类型区分大小问题

问题: 如果联合主键报类似下面错误:

MySQLIntegrityConstraintViolationException: Duplicate entry '186699-1-malu8070' for key 'PRIMARY'

分析: 可能是有两条大小写不一致的数据,插入时联合主键忽略大小写,认为这两条数据ID重复,所以会报Duplicate entry
例如:186699-1-malu8070 是由三个字段组成的联合主键,该条数据各字段分别对应的值为:186699 1 malu8070 ,前两个字段为int类型,不予考虑,第三个字段为varchar类型,如果没有为该varchar字段设置排序规则,则默认会忽略大小写。所以如下两条数据186699-1-malu8070186699-1-Malu8070 在插入时认为是一个主键,所以报Duplicate entry
``

解决:
1、 设置该varchar字段字符集为:*_bin 或者 *_cs

  • 例如:
contact_num` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '联系方式号码'
  • 说明:
    – utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写。
    – utf8_genera_ci不区分大小写,ci为case insensitive的缩写,即大小写不敏感。
    – utf8_general_cs区分大小写,cs为case sensitive的缩写,即大小写敏感。

2、 创建字段指定binary。

  • 例如:
contact_num` varchar(20)  binary  NOT NULL DEFAULT '' COMMENT '联系方式号码'

坑二 字符串前后空格问题

问题: 186699-1-malu8070186699-1-malu8070(后面有个空格),在插入时mysql认为是一条数据,也会报Duplicate entry '186699-1-malu8070 ' for key 'PRIMARY' 这种错误
分析: mysql默认对字符串前后空格忽略,即联合主键186699-1-malu8070186699-1-malu8070(后面有个空格)认为是一个主键,所以会报Duplicate entry
解决: 在插入前进行trim()处理去除前后空格,然后判断是否相等,相等不执行重复插入操作。

注意:

  • 查询和插入一样存在上述两种问题

mysql联合主键的坑相关推荐

  1. mysql 联合主键_Mysql 创建联合主键

    Mysql 创建联合主键 2008年01月11日 星期五 下午 5:21 使用primary key (fieldlist) 比如: create table mytable ( aa int, bb ...

  2. mysql联合主键是不是索引_MySQL:联合主键、索引

    MySQL数据库用联合主键.用两张表测试. # 1分钟数据表 CREATE TABLE md_1min2( `d_1min` DATETIME(3), `code` CHAR(16), `open` ...

  3. mysql联合主键语句6_初探SQL语句复合主键与联合主键

    一.复合主键 所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键. 比如 create table test ( name varchar(19), id nu ...

  4. mysql联合主键_初探SQL语句复合主键与联合主键

    一.复合主键 所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键. 比如 create table test ( name varchar(19), id nu ...

  5. mysql 联合主键重复数据库_联合主键和复合主键有什么区别

    联合主键和复合主键有什么区别 发布时间:2020-07-11 09:52:20 来源:亿速云 阅读:171 作者:Leah 这期内容当中小编将会给大家带来有关联合主键和复合主键有什么区别,文章内容丰富 ...

  6. mysql 联合主键_深入理解Mysql索引底层数据结构与算法,背后的故事

    引言 索引是帮助MySQL高效获取数据的排好序的数据结构 索引数据结构对比 二叉树 左边子节点的数据小于父节点数据,右边子节点的数据大于父节点数据.如果col2是索引,查找索引为89的行元素,那么只需 ...

  7. mysql 联合主键优缺点_mysql索引的类型和优缺点

    mysql索引的类型和优缺点 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针. 注:[1]索引不是万能的!索引可以加快数据检索操作,但 ...

  8. mysql 联合主键 加锁_MySQL 加锁处理分析

    背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题.我在工作过程中,经常会有同事咨询这方面的问题.同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题.本文,准备 ...

  9. mysql联合主键,也就是两个数据字段一起做主键的情况

    一个数据表,需要两个字段联合起来一块做主键的时候.举例如下: 直接用sql语句的话如下 ALTER TABLE `表名` ADD PRIMARY KEY ( `表中字段名1` , `表中字段名2` ) ...

  10. mysql联合主键和单一主键

    索引分单列索引和组合索引.单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引.组合索引,即一个索包含多个列. MySQL索引类型包括:   (1)普通索引 这是最基本的索引, ...

最新文章

  1. ibm笔记本电脑电池_开善乡 2.0间距笔记本电池连接器公座 11P电池座接口
  2. 从其他领域和智能机器人的联系,浅谈人工智能的前景
  3. Cisco1242胖AP转瘦AP并加入Cisco无线控制器
  4. 《系统集成项目管理工程师》必背100个知识点-81风险管理
  5. 2.3微秒的特征点匹配
  6. 微软反垄断案新突破 Win10系统或需剥离可信计算
  7. react中使用构建缓存_使用React和Netlify从头开始构建电子商务网站
  8. LeetCode 1641. 统计字典序元音字符串的数目(DP)
  9. 复用:设计模式 反模式 分析模式
  10. 使用IE过渡滤镜和CSS3中的RGBA属性完成背景色透明效果
  11. Android 两种方式实现类似水波扩散效果
  12. 无废话aspose-words-18.6 java版破解
  13. 速达5000维护服务器,财务软件速达5000为什么连不上服务器
  14. 计算机ps基础知识教案范文,PS基础教案 一学期全套教案.doc
  15. 难道真的是RPWT-LFS日记1
  16. excel制作折线图
  17. 使用uiautomatorviewer报错Error obtaining UI hierarchy
  18. 个人支付接口现状分析——如何选择一个靠谱的个人支付接口
  19. python妹子图爬虫5千张高清大图突破防盗链福利5千张福利高清大图
  20. 樱花落(python)

热门文章

  1. 2021-5-1电脑配置及组装教程
  2. 【Driver Booster 9 PRO】 驱动更新工具 提升游戏性能
  3. 用计算机打爸爸妈妈,看图写话打电脑
  4. 特殊符号html怎么打出来的,特殊符号怎么打出来
  5. 计算机更新好不,Win10自动更新好不好有必要吗?如何关闭屏蔽Windows更新?
  6. 【设计模式】【第四章】【订单状态流转】【状态模式 + 享元模式+模板方法模式】
  7. 首个完全实用异步共识算法提出,我国区块链核心算法取得重大突破 | 产业区块链发展周报...
  8. iqos烟弹哪个最好抽?我品尝了十一种电子烟烟弹后告诉你
  9. 程序员是做全栈工程师好?还是专注一个领域好?
  10. CubeMX中配置外设引脚重映射