Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL Workbench:Fehler in Abfrage (1064):Syntaxfehler nahe „VISIBLE“ in Zeile 1

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: