2013-04-01 17 views
3

這是用我的MySQL表模式,IM MySQL的敏感5製作獨特的鍵不區分大小寫

-- 
-- Table structure for table `DATA_USER_ROLE` 
-- 

DROP TABLE IF EXISTS `DATA_USER_ROLE`; 
/*!40101 SET @saved_cs_client  = @@character_set_client */; 
/*!40101 SET character_set_client = utf8 */; 
CREATE TABLE `DATA_USER_ROLE` (
    `ID` int(11) NOT NULL, 
    `NAME` varchar(128) NOT NULL, 
    `VAL_ID` int(11) NOT NULL, 
    `CREATION_TIME` datetime NOT NULL, 
    `ROLE_TYPE` int(11) NOT NULL, 
    `STORAGE_TYPE` int(11) NOT NULL, 
    PRIMARY KEY (`ID`), 
    UNIQUE KEY `BV_AC_ROLE_KEY_IDX` (`NAME`,`VAL_ID`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

所需UNIQUE KEY情況下,

應該允許進入,如值( 'A' ,0)&( 'A',0)

試圖改變覈對到LATIN_1和latin_generic_ci

回答

2

的simpliest是對添加BINARY DDL語句,

`NAME` varchar(128) BINARY NOT NULL 
+0

@J寬:我改變了排序規則名稱aatribute到utf8_bin。我使用SQLYOG。同樣的問題在那裏。 – Rosh

+0

如何添加'BINARY'?同樣的問題是什麼意思? –

+0

更改爲varbinary正常工作。問題解決了,謝謝JW – Rosh

0

如果您需要區分大小寫:

ALTER TABLE `DATA_USER_ROLE` CHANGE `NAME` `NAME` VARCHAR(128) 
CHARACTER SET latin1 COLLATE latin1_bin NULL DEFAULT NULL 

如果您需要區分大小寫:

ALTER TABLE `DATA_USER_ROLE` CHANGE `NAME` `NAME` VARCHAR(128) 
CHARACTER SET latin1 COLLATE latin1_general_ci NULL DEFAULT NULL 
+4

看起來像從[http://stackoverflow.com/a/6888308/1730100] – kazy

+0

偷來的答案在任何情況下,這個答案會有更多的解釋更有幫助。 –

0

只需使用utf8_general_ci(案不區分大小寫)字符集的默認情況下,你的數據庫或只有一行,如果你需要

0

你可以做這樣的方式..

create table testTable (col_name varchar(100) character set utf8 
collate utf8_bin not null) Engine=innodb default charset=utf8