DBAtlas · 数据库运维图谱

1170: ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT column used in key specification without a key length(在键定义中使用 BLOB/TEXT 列但未指定键长度)

MySQL

含义

在索引/键定义中使用了 BLOB 或 TEXT 列,但未指定前缀长度。这些类型无法整体索引;只能索引前 N 个字符/字节。

原因

在 CREATE TABLE 或 CREATE INDEX 中对 TEXT/BLOB 列定义 INDEX/UNIQUE/PRIMARY KEY 时未指定长度。由于无法整体索引这些可能非常大的值,MySQL 要求指定前缀长度。

解决方法

在索引中指定前缀长度,例如 INDEX (description(255))。示例:ALTER TABLE my_table ADD INDEX idx_description (description(191));(由于 InnoDB 键前缀限制,utf8mb4 下常用 191)。如需全文搜索,考虑使用 FULLTEXT 索引。对于应当简短且唯一的字段,将列改为 VARCHAR 可能更合适。

在 DBAtlas 中打开 →

同一数据库的其他条目