MySQL Workbench: Error en la consulta(1064): Error de sintaxis cerca de ''VISIBLE'' en la línea 1
mysql-workbench (3)
¿Alguna idea de por qué
VISIBLE
continuación está causando un problema?
CREATE TABLE IF NOT EXISTS `setting` (
`uuid` INT(10) NOT NULL,
`type` VARCHAR(255) NOT NULL,
`code` VARCHAR(255) NOT NULL COMMENT ''An unique name.'',
`value` MEDIUMTEXT NULL DEFAULT NULL,
`comment` LONGTEXT NULL DEFAULT NULL,
`created_on` INT UNSIGNED NOT NULL,
`updated_on` INT UNSIGNED NOT NULL,
PRIMARY KEY (`uuid`))
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8;
CREATE UNIQUE INDEX `name_UNIQUE` ON `setting` (`code` ASC) VISIBLE;
CREATE UNIQUE INDEX `uuid_UNIQUE` ON `setting` (`uuid` ASC) VISIBLE;
Errores:
CREAR UN ÍNDICE ÚNICO
name_UNIQUE
ONsetting
(code
ASC) Error VISIBLE en la consulta (1064): Error de sintaxis cerca de ''VISIBLE'' en la línea 1CREAR UN ÍNDICE ÚNICO
uuid_UNIQUE
ONsetting
(uuid
ASC) Error VISIBLE en la consulta (1064): Error de sintaxis cerca de ''VISIBLE'' en la línea 1
No hay error si
elimino
VISIBLE
pero
MySQL Workbench 8.0.12 lo
genera automáticamente.
¿Cómo puedo evitar que MySQL Workbench haga eso?
Mi información de MySQL en mi Ubuntu 18.04:
Versión de MySQL: 5.7.23-0ubuntu0.18.04.1 a través de la extensión PHP MySQLi
El problema aquí es la diferencia en la sintaxis de las diferentes versiones del servidor MySQL.
Parece que
MySQL Workbench 8.0.12 genera
automáticamente la
CREATE UNIQUE INDEX
para el servidor MySQL
versión 8.0
.
Desde
MySQL Server 8.0 Docs
, la sintaxis de
CREATE INDEX
es:
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}
Sin embargo, esta opción de
{VISIBLE | INVISIBLE}
{VISIBLE | INVISIBLE}
no está disponible en el
servidor MySQL 5.7
.
De
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}
Si no desea actualizar a la última versión de MySQL;
puede deshabilitar esta función de generación automática con el índice
VISIBLE / INVISIBLE
:
En MySQL Workbench:
Ir:
Edición> Preferencias> Modelado> MySQL.
Luego, configure la "Versión de MySQL de destino predeterminada" a 5.7
Compruebe la captura de pantalla a continuación:
Versión alternativa a 5.7 o 6.3. Utilicé 6.3. En Modelo> Opciones de modelo ..> MySql> 6.3
en Workbench: Modelo> Opciones de modelo ...> MySQL => desmarque "Usar valores predeterminados de la configuración global