为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

拉丁的传说 2019-12-06 11:16:02

为什么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


查看完整描述

3 回答

?
湖上湖

这里的问题是不同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。


查看完整回答
反对 回复 2019-12-06
?
一只萌萌小番薯

在工作台中:模型>模型选项...> MySQL =>取消选中“使用全局设置中的默认值


查看完整回答
反对 回复 2019-12-06
?
狐的传说

5.7或6.3的替代版本。我用6.3。在模型>模型选项..> MySql> 6.3


查看完整回答
反对 回复 2019-12-06

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信