首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL工作台:查询中的错误(1064):第1行“可见”附近的语法错误

MySQL工作台:查询中的错误(1064):第1行“可见”附近的语法错误
EN

Stack Overflow用户
提问于 2018-10-12 18:22:48
回答 3查看 21K关注 0票数 34

知道为什么下面的VISIBLE会引起问题吗?

代码语言:javascript
复制
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;

错误:

在查询(1064)中创建唯一索引name_UNIQUE ON setting (code ASC)可见错误:第1行“code”附近的语法错误 在查询(1064)中创建唯一索引uuid_UNIQUE ON setting (uuid ASC)可见错误:第1行“uuid”附近的语法错误

如果删除VISIBLE,则不会出错,但MySQL Workbench 8.0.12自动生成该错误。我如何阻止MySQL工作台这样做呢?

我的MySQL信息在我的Ubuntu18.04:

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-12 18:35:39

这里的问题是不同MySQL服务器版本在语法上的差异。MySQL Workbench 8.0.12似乎是为MySQL服务器 8.0自动生成CREATE UNIQUE INDEX语句。

MySQL服务器8.0文档中,CREATE INDEX的语法是:

代码语言:javascript
复制
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中不可用。来自文档

代码语言:javascript
复制
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工作台中:

请转至:

编辑>首选项>建模> MySQL。

然后,将“默认目标MySQL版本”设置为5.7

请查看下面的截图:

票数 49
EN

Stack Overflow用户

发布于 2018-11-15 13:38:09

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

票数 2
EN

Stack Overflow用户

发布于 2019-04-28 06:16:05

5.7或6.3的备选案文。我用了6.3。论Model>Model Options..>MySql>6.3

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52785125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档