那么問題又來了,為什么我前面手工測試latin1_bin時不生效呢? 原來MySQL按照下面的方式選擇表字符集和 校對規則: 如果指定了CHARACTER SET X和COLLATE Y,那么采用CHARACTER SET X和COLLATE Y。 如果指定了CHARACTER SET X而沒有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默認校對規則。 否則,采用服務器字符集和服務器校對規則。 而我們在建表的時候指定了character set,所以它永遠是采用對應的默認的校對規則。
當然我們其實也沒必要重建表格,只需要alter table db_allot CONVERT TO CHARACTER SET latin1 COLLATE latin1_bin這樣轉換即可。