开发者社区 问答 正文

MySQL Workbench:查询错误(1064):第1行“ VISIBLE”附近的语?mysql

为什么VISIBLE下面会引起问题的任何想法?

CREATE TABLE IF NOT EXISTS setting ( uuid INT(10) NOT NULL, type VARCHAR(255) NOT NULL, code VARCHAR(255) NOT NULL COMMENT 'An unique name.', value MEDIUMTEXT NULL DEFAULT NULL, comment LONGTEXT NULL DEFAULT NULL, created_on INT UNSIGNED NOT NULL, updated_on INT UNSIGNED NOT NULL, PRIMARY KEY (uuid)) ENGINE = MyISAM DEFAULT CHARACTER SET = utf8;

CREATE UNIQUE INDEX name_UNIQUE ON setting (code ASC) VISIBLE;

CREATE UNIQUE INDEX uuid_UNIQUE ON setting (uuid ASC) VISIBLE; 错误:

CREATE UNIQUE INDEX name_UNIQUEON setting(codeASC)VISIBLE查询(1064)中的错误:第1行“ VISIBLE”附近的语法错误

CREATE UNIQUE INDEX uuid_UNIQUEON setting(uuidASC)VISIBLE查询(1064)中的错误:第1行“ VISIBLE”附近的语法错误

如果删除则没有错误,VISIBLE但是MySQL Workbench 8.0.12自动生成该错误。如何阻止MySQL Workbench这样做?

我在Ubuntu 18.04中的MySQL信息:

MySQL版本:5.7.23-0ubuntu0.18.04.1通过PHP扩展MySQLi

展开
收起
保持可爱mmm 2020-05-17 12:52:02 711 分享 版权
1 条回答
写回答
取消 提交回答
  • 这里的问题是不同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

    2020-05-17 12:59:25
    赞同 展开评论