Problemet her er forskellen i syntaks på tværs af forskellige MySQL-serverversioner. Det ser ud til, at MySQL Workbench 8.0.12 genererer automatisk CREATE UNIQUE INDEX
sætning for MySQL-serveren version 8.0 .
Fra MySQL Server 8.0 Docs
, syntaksen for CREATE INDEX
er:
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}
Denne mulighed for {VISIBLE | INVISIBLE}
er ikke tilgængelig i MySQL Server 5.7 . Fra 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}
Hvis du ikke ønsker at opgradere til den nyeste version af MySQL; du kan deaktivere denne funktion til automatisk generering med VISIBLE / INVISIBLE
indeks:
I MySQL Workbench:
Gå til:
Rediger> Præferencer> Modellering> MySQL.
Indstil derefter "Default Target MySQL Version" til 5.7
Tjek skærmbilledet nedenfor: