这是我的mysql表架构,即使用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
答案 0 :(得分:3)
答案 1 :(得分: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
答案 2 :(得分:0)
默认情况下,只为您的数据库使用utf8_general_ci(不区分大小写)字符集,或者只为一行使用
答案 3 :(得分:0)
你可以这样做..
create table testTable (col_name varchar(100) character set utf8
collate utf8_bin not null ) Engine=innodb default charset=utf8
答案 4 :(得分:0)
COLLATE
可以添加到整个表格,即每个文本列,例如
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=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
这遵循 Monolune 对 https://www.monolune.com/mysql-utf8-charsets-and-collations-explained/ 和
中的 CHARSET 和 COLLATE 的建议
https://www.monolune.com/what-is-the-utf8mb4_0900_ai_ci-collation/
这些是自 MySQL 8.0.1 以来的默认设置。