我在将数据从SQL server迁移到MySQL时遇到了问题。我在SQL server中有nvarchar列,并将它们导出到Unicode文本文件中。但是当我将列导入到MySQL的utf-8表中时,我会得到一个重复值的错误: Mysql看到'Kaneko,Shusuke‘和'Kaneko,Shusuke’之间没有区别。我正在尝试将这些值放到一个独特的列中。
怎么了?我必须在MySQL中使用另一个字符集吗?
在导入到utf8之前,我还尝试将文本文件转换为MySQL,但仍然得到相同的错误。
发布于 2015-09-26 05:55:41
看来,在创建Mysql表时出现了问题。首先在mysql提示符上使用SHOW CREATE TABLE并查看其表结构。你用过正确的字符集和校对吗?你可以在这里读到mysql文档
很多时候,校对不仅是不区分大小写的,而且在一定程度上也是口音不敏感的。(正如Joni Salonen指出的,这是错误的!)但á = a.
因此,我们可以使用二进制排序规则,但是它有自己的drawback.Binary排序规则,如果字符不同(无论是大小写还是对话式的差异),则可以将字符串与C中的strcmp()完全相同。它的缺点是排序顺序是不自然的。
非自然排序顺序的一个例子(如“二进制”是):A,B,a,b自然排序顺序在这种情况下是: A,a,B,b(中小企业字母的小变化和大写变化相互排列)
二进制排序的实际优势在于它的速度,因为字符串比较非常简单/快速。在一般情况下,带有二进制的索引可能不会产生排序的预期结果,但是对于精确的匹配,它们可能是有用的。对特定列使用二进制排序规则(可能是您的最佳选择)
对前-
drop table cc;
CREATE TABLE cc ( c CHAR(100) primary key ) DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
insert into cc values ( 'Kaneko, Shûsuke' );
insert into cc values ( 'Kaneko, Shusuke' );https://stackoverflow.com/questions/32793978
复制相似问题