如何添加 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 列组合的散列。使列唯一。"
我想为标题、语言和下载(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 列组合的散列。使列唯一。"