Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL Workbench:errore nella query (1064):errore di sintassi vicino a "VISIBLE" alla riga 1

Il problema qui è la differenza di sintassi tra le diverse versioni del server MySQL. Sembra che MySQL Workbench 8.0.12 sta generando automaticamente CREATE UNIQUE INDEX dichiarazione per il server MySQL versione 8.0 .

Dai Documenti di MySQL Server 8.0 , la sintassi per 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}

Tuttavia, questa opzione di {VISIBLE | INVISIBLE} non è disponibile in MySQL Server 5.7 . Da Documenti :

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}

Se non stai cercando di aggiornare all'ultima versione di MySQL; puoi disabilitare questa funzione di generazione automatica con VISIBLE / INVISIBLE indice:

In MySQL Workbench:

Vai a:

Modifica> Preferenze> Modellazione> MySQL.

Quindi, imposta la "Versione MySQL di destinazione predefinita" su 5.7

Controlla lo screenshot qui sotto: