MySQL 8中InnoDB无法为VARCHAR列创建FULLTEXT索引求助
解决MySQL 8中无法为
title列创建FULLTEXT索引的问题 问题根源在于title列的字符集排序规则:你的表默认使用utf8mb4字符集,但title列单独指定了utf16_general_ci排序规则,而InnoDB的FULLTEXT索引不支持utf16字符集的列。
解决步骤
1. 修改列的字符集与排序规则
将title列的字符集和排序规则调整为与表一致的utf8mb4_0900_ai_ci:
ALTER TABLE media MODIFY COLUMN title VARCHAR(190) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL;
2. 创建FULLTEXT索引
完成列修改后,执行索引创建语句:
ALTER TABLE media ADD FULLTEXT INDEX MEDIA_TITLE_FULLTEXT (title);
注意:如果其他需要创建FULLTEXT索引的列(如
authors)也使用了utf16_general_ci排序规则,需要执行同样的字符集修改操作。MySQL 8的InnoDB FULLTEXT索引仅支持utf8、utf8mb4、gbk这类字符集,不兼容utf16或utf32。
内容的提问来源于stack exchange,提问作者Alexander Chereji
相关产品推荐
相关产品推荐

