MySQL Workbench:查询中的错误(1064):第 1 行的“VISIBLE”附近的语法错误
Posted
技术标签:
【中文标题】MySQL Workbench:查询中的错误(1064):第 1 行的“VISIBLE”附近的语法错误【英文标题】:MySQL Workbench: Error in query (1064): Syntax error near 'VISIBLE' at line 1 【发布时间】:2019-03-18 00:22:25 【问题描述】:知道为什么下面的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;
错误:
创建唯一索引
name_UNIQUE
ONsetting
(code
ASC) 可见 查询中的错误 (1064):第 1 行的“VISIBLE”附近的语法错误创建唯一索引
uuid_UNIQUE
ONsetting
(uuid
ASC) 可见 查询中的错误 (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
【问题讨论】:
【参考方案1】:5.7 或 6.3 的替代版本。我用的是6.3。在模型>模型选项..>MySql>6.3
【讨论】:
【参考方案2】:这里的问题是不同 MySQL 服务器版本的语法差异。 MySQL Workbench 8.0.12 似乎正在为 MySQL 服务器 version 8.0 自动生成 CREATE UNIQUE INDEX
语句。
从MySQL Server 8.0 Docs,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 中不可用。来自Docs:
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
查看下面的截图:
【讨论】:
谢谢。有什么想法可以升级到 MySQL 服务器 8.0 版吗? @laukok 您可以按照此链接中给出的步骤进行操作:tecmint.com/install-mysql-8-in-ubuntu @MadhurBhaiyaVISIBLE
在将架构从一台 5.7 服务器传输到另一台服务器时仍然生成,即使设置了默认目标 MySQL 版本 5.7。这似乎是 Manjaro Linux 中 MySQL Workbench 8.0.19-2 的一个错误。
@kkzxak47 请按照此处的说明报告错误:dev.mysql.com/doc/workbench/en/workbench-reporting-bugs.html
我在 MariaDB 10.3.27 和 MySQL Workbench 8.0.22 上遇到了同样的问题。在 MySQL Workbench 中将 Target MySQL Version 设置为 5.7 就可以了。谢谢!【参考方案3】:
在工作台中: 模型 > 模型选项 ... > MySQL => 取消选中“使用全局设置中的默认值
【讨论】:
以上是关于MySQL Workbench:查询中的错误(1064):第 1 行的“VISIBLE”附近的语法错误的主要内容,如果未能解决你的问题,请参考以下文章
MySQL Workbench 6.3 (Mac) 挂起简单查询