Das Problem hier ist der Unterschied in der Syntax zwischen verschiedenen MySQL-Serverversionen. Es scheint, dass MySQL Workbench 8.0.12 generiert automatisch CREATE UNIQUE INDEX
-Anweisung für den MySQL-Server Version 8.0 .
Aus den MySQL Server 8.0 Docs
, die Syntax für CREATE INDEX
ist:
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}
Diese Option von {VISIBLE | INVISIBLE}
ist in MySQL Server 5.7 nicht verfügbar . Aus 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}
Wenn Sie nicht auf die neueste Version von MySQL aktualisieren möchten; Sie können diese Funktion der automatischen Generierung mit VISIBLE / INVISIBLE
deaktivieren index:
In MySQL-Workbench:
Gehen Sie zu:
Bearbeiten> Einstellungen> Modellierung> MySQL.
Stellen Sie dann die „Standardziel-MySQL-Version“ auf 5.7 ein
Überprüfen Sie den Screenshot unten: