BLOB/文本列'number'在键规范中使用,没有键长度

  • 本文关键字:范中使 number BLOB 文本 mysql
  • 更新时间 :
  • 英文 :


在此处输入图像描述

1170 - 密钥规范中使用的 BLOB/TEXT 列"数字",没有密钥长度。

需要帮助。

CREATE TABLE IF NOT EXISTS `paradox_serial_number` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`identifier` varchar(50) DEFAULT NULL,
`item` tinytext NOT NULL,
`number` longtext NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `number` (`number`) USING HASH
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;```

索引键的长度是有限的。从文档中:

对于以下InnoDB表,索引键前缀长度限制为 3072 字节 使用DYNAMICCOMPRESSED行格式。

对于以下InnoDB表,索引键前缀长度限制为 767 字节 使用REDUNDANTCOMPACT行格式。例如,您可能会点击 此限制,列前缀索引超过 191 个字符TEXTVARCHAR列,假设utf8mb4字符集和 每个字符最多 4 个字节。

尝试使用超过限制的索引键前缀长度 返回错误。

InnoDB如果通过指定 创建 MySQL 实例时innodb_page_size选项,最大值 索引键的长度根据限制按比例降低 对于 16KB 的页面大小,为 3072 字节。即最大索引键 当页面大小为 8KB 时,长度为 1536 字节,当 页面大小为 4KB。

找出适用于您的设置的限制,并在创建索引时通过在列名后加上括号中的该数字来指定该长度。例如,如果 767 适用:

CREATE TABLE ...
(...
number longtext
NOT NULL,
...
UNIQUE KEY number
(number(767))
USING HASH
...) ENGINE=InnoDB ...;

最新更新