在此处输入图像描述
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 字节 使用DYNAMIC
或COMPRESSED
行格式。对于以下
InnoDB
表,索引键前缀长度限制为 767 字节 使用REDUNDANT
或COMPACT
行格式。例如,您可能会点击 此限制,列前缀索引超过 191 个字符TEXT
或VARCHAR
列,假设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 ...;