在latin1字符集MySQL表上区分大小写的INSERT IGNORE

时间:2016-01-06 15:55:01

标签: mysql

$ CREATE TABLE `test` ( `data` char(64), UNIQUE KEY `key` (`data`));
$ INSERT IGNORE INTO test (data) VALUES ('a');
$ INSERT IGNORE INTO test (data) VALUES ('A');
$ SELECT * FROM test;
+------+
| data |
+------+
| a    |
+------+

如何让第二个INSERT IGNORE在表格中添加新条目?是否可以不重新定义表格?

2 个答案:

答案 0 :(得分:1)

MySQL拒绝按原样插入重复的行。如果您希望data列不区分大小写,则必须更改表:

ALTER TABLE `test` CHANGE `data` `data` CHAR( 64 )
CHARACTER SET latin1 COLLATE latin1_bin NULL DEFAULT NULL 

答案 1 :(得分:0)

不,没有DDL就不可能。您需要更改列排序规则:

alter table test modify data char(64) collate utf8_bin;