MySQL Workbench: ошибка в запросе (1064): синтаксическая ошибка рядом с 'VISIBLE' в строке 1 - PullRequest
0 голосов
/ 12 октября 2018

Есть идеи, почему VISIBLE ниже вызывает проблему?

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;

Ошибки:

CREATE UNIQUE INDEX name_UNIQUE ON setting (code ASC) VISIBLE Ошибка в запросе (1064): синтаксическая ошибка рядом с 'VISIBLE' в строке 1

CREATE UNIQUE INDEX uuid_UNIQUE ON setting (uuid ASC) VISIBLE Ошибка в запросе (1064): синтаксическая ошибкаоколо 'VISIBLE' в строке 1

Нет ошибки, если я удаляю VISIBLE, но MySQL Workbench 8.0.12 автоматически генерирует это.Как я могу остановить MySQL Workbench от этого?

Моя информация MySQL в моем Ubuntu 18.04:

Версия MySQL: 5.7.23-0ubuntu0.18.04.1 через расширение PHP MySQLi

Ответы [ 3 ]

0 голосов
/ 15 ноября 2018

в Workbench: Модель> Параметры модели ...> MySQL => снимите флажок "Использовать значения по умолчанию из глобальных настроек

0 голосов
/ 28 апреля 2019

Альтернативная версия 5.7 или 6.3.Я использовал 6.3.На Модель> Параметры модели ..> MySql> 6.3

0 голосов
/ 12 октября 2018

Проблема здесь заключается в разнице в синтаксисе между различными версиями сервера MySQL.Похоже, что MySQL Workbench 8.0.12 автоматически генерирует оператор CREATE UNIQUE INDEX для сервера MySQL версия 8.0 .

из документов MySQL Server 8.0, синтаксис для 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}

Однако этот параметр {VISIBLE | INVISIBLE} недоступен в MySQL Server 5.7 Документы :

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}

Если вы не хотите обновлять MySQL до последней версии;Вы можете отключить эту функцию автоматической генерации с помощью VISIBLE / INVISIBLE index:

В MySQL Workbench:

Перейти к:

Редактировать> Предпочтения> Моделирование> MySQL.

Затем установите «Целевую версию MySQL по умолчанию» на 5.7

Проверьте скриншот ниже:

MySQL WorkBench Modeling

...