日期:2014-05-16  浏览次数:20818 次

mysql字段的collation默认规则在多语言环境下的问题
同事碰到的一个诡异问题,挺有意思的..开始以为是索引的问题,后来才发现是collation的问题

问题描述如下:
在mysql表keywords对keyword字段进行查询,SQL为
select * from keywords where keyword = 'latigos'
匹配出2条结果,但是2条结果的keyword字段是不一样的,分别是:
latigos、látigos
原因是DBA对mysql字段的collation规则默认是utf8_general_ci,表示字符串比对忽略大小写和音标,解决方案是修改成utf8_bin这个类型就可以精确匹配,关于这几种type的区别,详细见下面链接:
http://www.crtgen.com/2011/04/15/the-difference-between-utf8_general_ci-utf8_unicode_ci-utf8_bin/