知道为什么下面的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;错误:
在查询(1064)中创建唯一索引
name_UNIQUEONsetting(codeASC)可见错误:第1行“code”附近的语法错误 在查询(1064)中创建唯一索引uuid_UNIQUEONsetting(uuidASC)可见错误:第1行“uuid”附近的语法错误
如果删除VISIBLE,则不会出错,但MySQL Workbench 8.0.12自动生成该错误。我如何阻止MySQL工作台这样做呢?
我的MySQL信息在我的Ubuntu18.04:
MySQL版本: 5.7.23-0ubuntu0.18.04.1通过PHP扩展MySQLi
发布于 2018-10-12 18:35:39
这里的问题是不同MySQL服务器版本在语法上的差异。MySQL Workbench 8.0.12似乎是为MySQL服务器 8.0自动生成CREATE UNIQUE INDEX语句。
在MySQL服务器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工作台中:
请转至:
编辑>首选项>建模> MySQL。
然后,将“默认目标MySQL版本”设置为5.7
请查看下面的截图:

发布于 2018-11-15 13:38:09
在Workbench中:模型>模型选项.> MySQL =>取消选中“使用全局设置中的默认值”
发布于 2019-04-28 06:16:05
5.7或6.3的备选案文。我用了6.3。论Model>Model Options..>MySql>6.3
https://stackoverflow.com/questions/52785125
复制相似问题