我在MySQL中创建唯一键约束时遇到错误。我在MySQL中有一个独特的键约束。我有一个包含两列VARCHAR()类型的表,我需要使用这两列创建一个唯一的键约束,但是当我创建重复记录时会发生错误。我确定这不是重复记录,因为这两列代表Windows中目录的内容列表,默认情况下不接受同一文件夹中相同的文件名。
创建声明:
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`);
错误讯息:
重复条目'F:\ Fileserver \ OM \ OM_ADMINISTRATIVO \ VIAGEM \Autorizações\ 2014 \ 10'关键'caminho'
表格内容:
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
[]中
答案 0 :(得分:0)
在您的数据库中有一些值为caminho的值:'F:\ Fileserver \ OM \ OM_ADMINISTRATIVO \ VIAGEM \Autorizações\ 2014 \ 10'已保存,请在没有select * from ..
的情况下执行“\\\\
”你应该找到它。
您还可以尝试查询:
Select * from * FROM filelist.fileserver WHERE caminho LIKE '%Autorizações%'
%
表示之前或之后可以有更多字符,这将返回包含“Autorizações”的所有结果。
尝试找到类似的结果,希望有所帮助
答案 1 :(得分:0)
我认为问题来自这两行:
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;
第一场比赛,第二场比赛没有。
解决方案是更改表默认排序规则。 您也可以按列更改排序规则,但我不知道约束将使用哪个值...