Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL Workbench :Erreur dans la requête (1064) :Erreur de syntaxe près de 'VISIBLE' à la ligne 1

Le problème ici est la différence de syntaxe entre les différentes versions du serveur MySQL. Il semble que MySQL Workbench 8.0.12 génère automatiquement CREATE UNIQUE INDEX instruction pour le serveur MySQL version 8.0 .

Depuis la Documents MySQL Server 8.0 , la syntaxe pour CREATE INDEX est :

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}

Cependant, cette option de {VISIBLE | INVISIBLE} n'est pas disponible dans MySQL Server 5.7 . À partir de Documents :

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}

Si vous ne cherchez pas à passer à la dernière version de MySQL ; vous pouvez désactiver cette fonctionnalité de génération automatique avec VISIBLE / INVISIBLE indice :

Dans MySQL Workbench :

Aller à :

Édition > Préférences > Modélisation > MySQL.

Ensuite, définissez la "Version MySQL cible par défaut" sur 5.7

Vérifiez la capture d'écran ci-dessous :