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

MySQL Workbench:Fejl i forespørgsel (1064):Syntaksfejl nær 'VISIBLE' på linje 1

Problemet her er forskellen i syntaks på tværs af forskellige MySQL-serverversioner. Det ser ud til, at MySQL Workbench 8.0.12 genererer automatisk CREATE UNIQUE INDEX sætning for MySQL-serveren version 8.0 .

Fra MySQL Server 8.0 Docs , syntaksen for CREATE INDEX er:

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}

Denne mulighed for {VISIBLE | INVISIBLE} er ikke tilgængelig i MySQL Server 5.7 . Fra 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}

Hvis du ikke ønsker at opgradere til den nyeste version af MySQL; du kan deaktivere denne funktion til automatisk generering med VISIBLE / INVISIBLE indeks:

I MySQL Workbench:

Gå til:

Rediger> Præferencer> Modellering> MySQL.

Indstil derefter "Default Target MySQL Version" til 5.7

Tjek skærmbilledet nedenfor:



  1. RTRIM() Funktion i Oracle

  2. Lad MySQL-brugere oprette databaser, men tillad kun adgang til deres egne databaser

  3. Sådan returneres en liste over gyldige tidszoner i Oracle-databasen

  4. En oversigt over PostgreSQL 13 libpq sslpassword-forbindelsesparametre