You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 8.0.11中空间/全文/哈希索引误用及显式索引顺序问题咨询

解决MySQL 8.0.11与Workbench 6.3.10正向工程的索引兼容问题

针对你遇到的sakila.film_text表在正向工程时的索引错误,我来帮你拆解问题并给出解决方案:

核心问题分析

从你提供的创建语句来看,主要问题出在全文索引的显式排序指定上:
MySQL 8.0.11开始对全文索引、空间索引这类特殊索引的语法做了严格限制,不再允许在索引字段后指定ASC/DESC排序方向——因为这类索引的内部存储结构不需要排序顺序,旧版本的Workbench(6.3.10)生成的语法已经不符合新版本MySQL的规范,这就是报错的根源。

具体解决方案

1. 手动修正SQL脚本

直接修改正向工程生成的film_text表创建语句,移除全文索引中的ASC关键字即可:

-- -----------------------------------------------------
-- Table `sakila`.`film_text`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `sakila`.`film_text` (
  `film_id` SMALLINT UNSIGNED NOT NULL,
  `title` VARCHAR(255) NOT NULL,
  `description` TEXT NULL,
  PRIMARY KEY (`film_id`),
  -- 移除了字段后的ASC指定
  FULLTEXT INDEX `idx_title_description` (`title`, `description`)
) ENGINE = InnoDB DEFAULT CHARSET=utf8mb4;

执行修正后的脚本就能成功创建表和全文索引。

2. 从根源避免问题(推荐)

由于MySQL Workbench 6.3.10是比较老旧的版本,对MySQL 8.0的语法兼容性不足,建议:

  • 升级MySQL Workbench到8.0及以上版本,新版本会自动适配MySQL 8.0的索引语法规范,生成不带排序方向的全文/空间索引语句
  • 如果暂时无法升级,在Workbench的表设计界面中,找到idx_title_description这个全文索引,删除字段后的排序顺序设置(默认应该是空白,不要手动选ASC/DESC),再重新执行正向工程

额外说明(关于空间/哈希索引错误)

如果还遇到其他空间或哈希索引的报错,补充两个关键点:

  • 哈希索引:InnoDB引擎不支持手动创建显式哈希索引,只有自动启用的自适应哈希索引(无需手动配置),如果Workbench生成了USING HASH的索引语句,改成USING BTREE即可
  • 空间索引:InnoDB表的空间索引要求字段必须是空间类型(如GEOMETRY),且索引需用SPATIAL关键字声明,确保语法符合MySQL 8.0的要求

内容的提问来源于stack exchange,提问作者井上智文

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:28:53