mysql唯一两列错误

mysql唯一两列错误,mysql,unique-key,Mysql,Unique Key,我在MySQL中创建唯一密钥约束时遇到错误。我在MySQL中有一个唯一的密钥约束。我有一个带有两列VARCHAR()类型的表,我需要用这两列创建一个唯一的键约束,但是当我创建重复记录时会发生错误。我确信这不是重复记录,因为这两列表示Windows中目录的内容列表,默认情况下,Windows不接受同一文件夹中相同的文件名 Create语句: DROP TABLE IF EXISTS `filelist`.`fileserver`; CREATE TABLE `filelist`.`fileser

我在MySQL中创建唯一密钥约束时遇到错误。我在MySQL中有一个唯一的密钥约束。我有一个带有两列VARCHAR()类型的表,我需要用这两列创建一个唯一的键约束,但是当我创建重复记录时会发生错误。我确信这不是重复记录,因为这两列表示Windows中目录的内容列表,默认情况下,Windows不接受同一文件夹中相同的文件名

Create语句:

DROP TABLE IF EXISTS `filelist`.`fileserver`;
CREATE TABLE  `filelist`.`fileserver` (
  `nome` varchar(300) NOT NULL,
  `caminho` varchar(500) NOT NULL,
  `dataCriacao` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `dataUltimoAcesso` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `dataUltimaModificacao` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `tamanho` bigint(20) unsigned NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
用于创建唯一关键点约束的命令:

ALTER TABLE filelist.fileserver ADD UNIQUE(`caminho`, `nome`);
错误消息:

密钥“caminho”的重复条目“F:\Fileserver\OM\OM_ADMINISTRATIVO\VIAGEM\Autorizações\2014\10”

表格内容:

SELECT * FROM filelist.fileserver WHERE caminho LIKE 'F:\\\\Fileserver\\\\OM\\\\OM_ADMINISTRATIVO\\\\VIAGEM\\\\Autorizações\\\\2014\\\\10%' ORDER BY nome;

nome
Alex - 02 a 03 de outubro.pdf
Alex - 28 a 31 de outubro.pdf
Antonio e Donizete - 17 de outubro.pdf
Arianny - 27 a 28 de outubro.pdf
Denison - 07 a 10 de outubro.pdf
Denison - 29 a 31 de outubro.pdf
Edeildo - 14 a 17 de outubro.pdf
Edeildo - 27 a 31 de outubro.pdf
Edeildo - 29 de setembro a 01 de outubro.pdf
Guilherme - 14 de outubro.pdf
Guilherme - 16 de outubro.pdf
Guilherme - 21 a 23 de outubro.pdf
Guilherme - 27 de outubro.pdf
Jan - 30 de setembro a 10 de outubro.pdf
Jan - 30 de setembro a 24 de outubro.pdf
Jose Eduardo - 12 a 17 de outubro.pdf
José Eduardo - 12 a 17 de outubro.pdf
Lucette - 29 de outubro a 07 de novembro.pdf
Lucette - 30 de setembro a 2 de outubro.pdf
Luis - 06 a 07 de outubro.pdf
Luis Claudio - 09 a 10 de outubro.pdf
Luis Claudio - 30 a 31 de outubro.pdf
Mariana - 01 a 03 de outubro.pdf
Mateus - 16 a 19 de outubro.pdf
Mauricio - 13 a 17 de outubro.pdf
Paulo - 14 a 17 de outubro.pdf
Paulo - 27 a 31 de outubro.pdf
Paulo - 29 de setembro a 01 de outubro.pdf
Rogério - 09 a 10 de outubro.pdf
Ronaldo - 02 a 03 de outubro.pdf
Ronaldo - 06 a 07 de outubro.pdf
Ronaldo - 16 de outubro.pdf
Ronaldo - 21 de outubro.pdf
Ronaldo - 27 a 28 de outubro.pdf
Ronaldo - Locação de Veículo.pdf
Silvana - 05 a 10 de outubro.pdf
Silvana - 05 a 24 de outubro.pdf
Tiago - 07 a 10 de outubro.pdf

[]s

在您的数据库中有Camino的值:“F:\Fileserver\OM\OM\u ADMINISTRATIVO\VIAGEM\Autorizaçes\2014\10”已保存,请在不使用
\\\\\
的情况下执行“
选择*自..
”操作,您应该会找到它

您也可以尝试查询:

Select * from * FROM filelist.fileserver WHERE caminho LIKE '%Autorizações%'
%
意味着前后可以有更多字符,这将返回所有包含“Autorizaões”的结果


尝试找到类似的结果,我希望它有帮助

我认为问题来自以下两行:

Jose Eduardo - 12 a 17 de outubro.pdf
José Eduardo - 12 a 17 de outubro.pdf
确实存在排序问题,请尝试以下两个命令,您将看到不同之处:

SELECT 'é' = 'e' COLLATE utf8_general_ci;
SELECT 'é' = 'e' COLLATE utf8_bin;
第一场比赛,第二场不是

解决方案是更改表的默认排序规则。
您也可以按列更改排序规则,但我不知道约束将使用哪个值…

如果要删除现有的重复项,可以执行
ALTER IGNORE TABLE filelist.fileserver ADD UNIQUE(
caminho
nome
Hi FLefèvre,我将排序规则更改为utf8èu bin,然后再次运行命令来创建约束。同样的错误。您知道由于排序规则的更改,是否需要重新插入表中的所有数据吗?尝试转换表:检查
转换为字符集
确认:
更改表转换为字符集utf8 COLLATE utf8èbin
解决问题Hi FLefèvre,成功!!!我转换了表字符集,然后应用唯一键。发生了一些错误,因为唯一密钥验证失败,但我更正了数据并进行了验证!!!谢谢你的帮助。。。和提示