当前位置:C++技术网 > 资讯 > mysql数据库UTF8设置区分大小写

mysql数据库UTF8设置区分大小写

更新时间:2018-11-13 17:36:05浏览次数:1+次

    在处理数据库的数据迁移时,原数据是SQL Server的数据,新数据库是Mysql。原数据库的数据是大小写敏感的,所以数据dx和Dx是不一样的。而在已经建好的mysql数据库中,设置唯一索引unique的时候,报错,提示数据重复了。查出来是dx和Dx。
为了顺利解决数据迁移的问题,我们又不能丢掉数据,而且重复的数据多达几百条。最简单的办法就是,将mysql数据表的这个字段改成大小写敏感的,这样就可以了。
    去网上查了一下资料,然后说是改mysql数据库的配置,如下:

lower_case_table_names=0(0:大小写敏感;1:大小写不敏感)
    如果我们不大面积的处理这个问题,我们只需要对这个字段进行处理,那么最好是用你设置字段的形式来解决,影响范围最小。在表的定义中,有一个排序规则,我们使用二进制格式就可以区分大小写了,加上UTF-8编码,就是utf8_bin。如果是其他编码,只要后面是_bin结尾的排序规则,就可以了。二进制是基于编码值的排序,而不是基于字母表的排序,大写和小写字母是不同的编码,自然也就不相同,因而是敏感的。而如果选择_cs就是区分大小写的,_ci是不区分大小写的。但是utf-8的似乎没有_cs,因为字符集有非字母表的规则,所以不存在大小写的说法,因此此时_cs是没有办法设置的。
    所以我们只能将排序规则改为_bin。此时就是区分大小写的,不论是中文字符还是英文字符,都是区分大小写的。