Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL Workbench:Erro na consulta (1064):Erro de sintaxe próximo a 'VISIBLE' na linha 1


O problema aqui é a diferença de sintaxe entre as diferentes versões do servidor MySQL. Parece que o MySQL Workbench 8.0.12 está gerando automaticamente CREATE UNIQUE INDEX instrução para o servidor MySQL versão 8.0 .

Do Documentos do MySQL Server 8.0 , a sintaxe para 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}

No entanto, esta opção de {VISIBLE | INVISIBLE} não está disponível no MySQL Server 5.7 . De Documentos :
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 você não deseja atualizar para a versão mais recente do MySQL; você pode desativar esse recurso de geração automática com VISIBLE / INVISIBLE índice:

No MySQL Workbench:

Vamos para:

Editar> Preferências> Modelagem> MySQL.

Em seguida, defina a "Versão de destino padrão do MySQL" como 5.7

Verifique a captura de tela abaixo: