关于Mysql数据库建库字符集utf8mb4下,排序规则utf8mb4_bin和utf8mb4_general_ci选择造成的查询匹配大小写问题

场景描述:

  项目采用了分库模式进行不同业务的开发,在共有的功能模块进行设计的时候采用主从库,或者各分库之中存在同样的库表结构,在使用过程中做库表同步的时候一定要保证库表所在的数据库的字符集和编码格式是保持一致的。否则完成库表同步或者迁移之后会造成查询问题:各独立库表查询数据都没有问题,但是在等值查询或者关联查询的时候会出现查询数据为空的现象;骚操作:在A库中把表建好了,copy到B库中,导致库表的排序规则不一致大小写匹配的时候出现问题。

逻辑描述:

  在数据从app入库的时候存储的是大写的字符code:123XXX,然后数据库查询的时候传入的是小写的code:123xxx,这时候是能查到的。然后二次存入的时候会以二次输入的code作为入参,这样存到后台就变成小写的code:123xxx。这是数据库存在了大小写不同的数据,此时如果有存在关联查询以code为关联外键的时候会出现查询的时候存在大小写匹配失败导致查询失败。

所以:

  不同的数据库建立一定要保持字符集和排序规则一致。

posted @ 2020-04-28 11:41  FlyingBread  阅读(2215)  评论(0编辑  收藏  举报