Problémem je zde rozdíl v syntaxi mezi různými verzemi serveru MySQL. Zdá se, že MySQL Workbench 8.0.12 automaticky generuje CREATE UNIQUE INDEX
příkaz pro server MySQL verze 8.0 .
Z Dokumenty MySQL Server 8.0
, syntaxe pro CREATE INDEX
je:
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}
Nicméně tato možnost {VISIBLE | INVISIBLE}
není k dispozici v MySQL Server 5.7 . Z Dokumenty
:
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}
Pokud nechcete upgradovat na nejnovější verzi MySQL; tuto funkci automatického generování můžete zakázat pomocí VISIBLE / INVISIBLE
index:
V MySQL Workbench:
Přejděte na:
Úpravy> Předvolby> Modelování> MySQL.
Poté nastavte "Výchozí cílovou verzi MySQL" na 5.7
Zkontrolujte snímek obrazovky níže: