#1071 - 指定的密钥问题太长了

时间:2014-02-25 11:17:30

标签: mysql

这个问题可以某种方式继续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字节。配置无变化。 为什么呢?

0 个答案:

没有答案