这个问题可以某种方式继续MySQL unique 1500 varchar field error (#1071 - Specified key was too long),但简单地说:
我将更改应用于mysql配置并将密钥/唯一长度增加到3072字节
ROW_FORMAT=DYNAMIC, innodb_file_format = Barracuda, innodb_large_prefix = true
如果我这样做:
CREATE TABLE IF NOT EXISTS `pages` (
`link` varchar(1500) NOT NULL,
`domain` varchar(255) NOT NULL,
`lastvisited` datetime DEFAULT NULL,
`id` bigint(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ROW_FORMAT=DYNAMIC;
ALTER TABLE `pages` ADD UNIQUE (
`link`
)
我收到错误:“#1071 - 指定密钥太长;最大密钥长度为3072字节”正确,因为链接是varchar(1500)并且是4500字节。
现在,使用相同的配置,我决定应用下一个表结构:
CREATE TABLE IF NOT EXISTS `pages` (
`link` varchar(1500) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
`domain` varchar(255) NOT NULL,
`lastvisited` datetime DEFAULT NULL,
`id` bigint(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`),
UNIQUE KEY `link` (`link`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ROW_FORMAT=DYNAMIC;
我得到错误:
#1709 - Index column size too large. The maximum column size is 767 bytes.
所做的所有更改都是CHARACTER SET,但这会将列大小减小到767字节。配置无变化。 为什么呢?