mysql 大小写区分问题

我这说的是在执行sql时,对数据区分大小写。

如果不区分大小写,那么sql1:select * from testtable where name='abc';  和 sql2 : select * from testtable where name = 'ABC'; 搜索效果是一样的。这样显然不合理。

这次遇到过这样的情况,所以备忘一下。

原因就是 table 的 “collation” 是 "utf8_general_ci"的。这个可以通过Navicat 工具看表属性,有一个叫做“整理”的属性。这个 collation 中文叫做  核对集 。

不知其他情况,我这编码全部使用的是 utf8,的字符集,那么默认的核对集就是 utf8_general_ci,我不想要这个,因为不区分大小写,我需要它变成区分大小写的 utf8_bin 。

如果数据库还没有建立,那么可以在 (linux) /etc/my.cnf  的[mysqld]  下,写上:

collation_server=utf8_bin  。如果已经存在这个key,那修改它。如此,再建库建表,就都是utf8_bin 的核对集了。

如果表已经建立好,需要修改核对集,那么使用下面的语句:

alter table test convert to character set utf8 collate utf8_bin;

这样既可。对所有表进行逐一修改。

注意,如果遇到某个表被别的表  foreign references 了的话,就需要先执行语句:

SET FOREIGN_KEY_CHECKS=0;

然后再执行 上面的 alter 语句,否则会报错。

猜你喜欢

转载自kangzye.iteye.com/blog/1942001