这里的问题是不同MySQL服务器版本之间的语法差异。看来MySQL Workbench 8.0.12是CREATE UNIQUE INDEXMySQL服务器版本8.0的自动生成语句。
在MySQL Server 8.0文档中,其语法为CREATE INDEX:
CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name [index_type] ON tbl_name (key_part,...) [index_option] [algorithm_option | lock_option] ...
key_part: {col_name [(length)] | (expr)} [ASC | DESC]
index_option: KEY_BLOCK_SIZE [=] value | index_type | WITH PARSER parser_name | COMMENT 'string' | {VISIBLE | INVISIBLE} /* Notice the option of VISIBLE / INVISIBLE */
index_type: USING {BTREE | HASH} 但是,此选项{VISIBLE | INVISIBLE}在MySQL Server 5.7中不可用。从文档:
CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name [index_type] ON tbl_name (key_part,...) [index_option] [algorithm_option | lock_option] ...
key_part: col_name [(length)] [ASC | DESC]
index_option: KEY_BLOCK_SIZE [=] value | index_type | WITH PARSER parser_name | COMMENT 'string' /* No option of VISIBLE / INVISIBLE */
index_type: USING {BTREE | HASH} 如果您不想升级到最新版本的MySQL,请执行以下操作:您可以禁用使用VISIBLE / INVISIBLE索引自动生成的此功能:
在MySQL Workbench中:
去:
编辑>首选项>建模> MySQL。
然后,将“默认目标MySQL版本”设置为5.7。来源:stack overflow