lau*_*kok 10 mysql mysql-workbench
为什么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;
Run Code Online (Sandbox Code Playgroud)
错误:
CREATE UNIQUE INDEX
name_UNIQUEONsetting(codeASC)VISIBLE查询(1064)中的错误:第1行“ VISIBLE”附近的语法错误CREATE UNIQUE INDEX
uuid_UNIQUEONsetting(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
Mad*_*iya 22
这里的问题是不同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}
Run Code Online (Sandbox Code Playgroud)
但是,此选项{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}
Run Code Online (Sandbox Code Playgroud)
如果您不想升级到最新版本的MySQL,请执行以下操作:您可以禁用使用VISIBLE / INVISIBLE索引自动生成的此功能:
在MySQL Workbench中:
去:
编辑>首选项>建模> MySQL。
然后,将“默认目标MySQL版本”设置为5.7。
检查以下屏幕截图:
