MySQL唯一约束不适用于UTF 8列?

时间:2013-10-19 11:25:03

标签: mysql

我有以下MySQL表:

CREATE TABLE `batch_data` (
  `group_name` varchar(200) NOT NULL,
  `keyword_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `keyword_type` varchar(20) NOT NULL,
  `keyword_category` varchar(20) NOT NULL,
  `group_category` varchar(20) NOT NULL,
  `keyword_content` varchar(100) NOT NULL,
  UNIQUE KEY `group_name` (`group_name`,`keyword_name`,`keyword_type`,`keyword_category`,`group_category`,`keyword_content`),
  UNIQUE KEY `Keyword_name_UNIQUE` (`keyword_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='keywords'

我在keyword_name列上添加了一个唯一约束,尽管MySQL允许在列中插入重复值。

约束条件适用于英语单词,但对于任何非拉丁文本,如阿拉伯语或希伯来语,它不会。

更重要当我在表上执行以下查询时,它没有显示没有重复的记录:

select keyword_name, count(1) from batch_data
group by keyword_name
having count(1) > 1;

但是,当我在Excel中导出数据并使用条件格式来突出显示重复项时,它会过滤许多重复的值。

任何帮助?

0 个答案:

没有答案