2010-02-18 22 views
3

似乎當我改變一個mysql表(在utf-8表/列上)時,它會返回一個重複的輸入錯誤。mysql結果是「特殊字符」 - 不敏感

例子:

ALTER TABLE name ADD UNIQUE(name) 

錯誤:

Duplicate entry 'Adé' for key 'name_UNIQUE' 

我想這是因爲我的數據庫中後續的行

Ade, Adé 

是否有可能改變與獨特的表特殊字符?

謝謝

鮑勃

+0

+1好問題,歡迎來到SO – Sarfraz 2010-02-18 09:49:18

回答

3

您需要設置上的collation列(或整個表或數據庫 - 我不認爲連接範圍將爲唯一工作約束)到尊重「e」和「é」之間差異的方法。請參閱here,以獲取不同排序規則設置可能具有的效果示例。

假設你的字符集是utf8,你可以用它來避免對你的唯一約束越來越誤報會utf8_bin,其中兩個字符串,除非它們是相同的字符串根本不比較等於最安全的排序規則。儘管如此,你需要注意unicode標準化之類的東西,否則你最終可能會得到兩個不同的標準化形式的字符序列相同的鍵,這使得它們不相等。只需注意一點小事。