sql >> Database >  >> RDS >> Mysql

MySQL Workbench:Fout in query (1064):Syntaxisfout bij 'VISIBLE' op regel 1

Het probleem hier is het verschil in syntaxis tussen verschillende MySQL-serverversies. Het lijkt erop dat MySQL Workbench 8.0.12 genereert automatisch CREATE UNIQUE INDEX statement voor de MySQL-server versie 8.0 .

Van de MySQL Server 8.0-documenten , de syntaxis voor CREATE INDEX is:

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}

Deze optie van {VISIBLE | INVISIBLE} is niet beschikbaar in de MySQL Server 5.7 . Van Documenten :

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}

Als u niet wilt upgraden naar de nieuwste versie van MySQL; je kunt deze functie van automatisch genereren uitschakelen met VISIBLE / INVISIBLE index:

In MySQL Workbench:

Ga naar:

Bewerken> Voorkeuren> Modelleren> MySQL.

Stel vervolgens de "Standaard doel MySQL-versie" in op 5,7

Bekijk de onderstaande schermafbeelding:



  1. SQLite GLOB

  2. Hoe u een gebruiksvriendelijke database voor uw bedrijf kiest

  3. Oracle UTL_HTTP Post Multipart/Form-Data (JSON &ZIP) Voorbeeld

  4. MySQL "NOT IN" query 3 tabellen