如何添加 CONSTRAINT UNIQUE 包含比默认字符更多字符的两列

How to ADD CONSTRAINT UNIQUE to colums that contains more characters than default

我想为标题、语言和下载(3 列)列添加唯一性。因为我没有其他选择来摆脱重复的条目。这是代码:

ALTER TABLE datapdf ADD CONSTRAINT tb_uq UNIQUE (title, language, download);

但是我得到这个错误:

1071 - 指定的密钥太长;最大密钥长度为 1000 字节

有什么解决办法吗?但请记住,它应该匹配这三列。

看来你这三栏的长度太长了,我测试了一下,看看。

drop table if exists datapdf;
create table datapdf 
(
title varchar(200),
 language varchar(300), 
 download varchar(510)
);

ALTER TABLE datapdf ADD CONSTRAINT tb_uq UNIQUE (title, language, download);

我得到一个和你一样的错误。

Error Code: 1071. Specified key was too long; max key length is 767 bytes

但是如果我改变 table datapdf 的结构,它运行成功。

drop table if exists datapdf;
create table datapdf 
(
title varchar(100),
 language varchar(100), 
 download varchar(100)
);

ALTER TABLE datapdf ADD CONSTRAINT tb_uq UNIQUE (title, language, download);

这是Action

ALTER TABLE datapdf ADD CONSTRAINT tb_uq UNIQUE (title, language, download)

所以我认为您可以更改 table 的结构(如果可能的话)来解决这个问题。但是,这不是一个好的解决方案,因为您可能失去你的 data.One 的最佳解决方案是 @N.B 所说的(这个问题的第一条评论):“
添加第四列。保存 3 列组合的散列。使列唯一。"