source

MySQL Workbench: 쿼리 오류(1064):1행의 'VISIBLE' 근처에서 구문 오류가 발생했습니다.

factcode 2023. 11. 5. 15:00
반응형

MySQL Workbench: 쿼리 오류(1064):1행의 'VISIBLE' 근처에서 구문 오류가 발생했습니다.

무슨 생각이 드십니까?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;

오류:

고유 인덱스 생성name_UNIQUEONsetting(codeASC) 쿼리에서 보이는 오류(1064):1행의 'VISIBLE' 근처에서 구문 오류가 발생했습니다.

고유 인덱스 생성uuid_UNIQUEONsetting(uuidASC) 쿼리에서 보이는 오류(1064):1행의 'VISIBLE' 근처에서 구문 오류가 발생했습니다.

제거해도 오류 없습니다.VISIBLEMySQL Workbench 8.0.12 자동으로 생성됩니다.MySQL Workbench에서 이 작업을 중지하려면 어떻게 해야 합니까?

Ubuntu 18.04의 MySQL 정보:

MySQL 버전: 5.7.23-0ubuntu018.04.1 PHP 확장을 통한 MySQLi

여기서 문제는 MySQL 서버 버전 간의 구문 차이입니다.MySQL Workbench 8.0.12가 자동 생성되는 것 같습니다.CREATE UNIQUE INDEXMySQL 서버 버전 8.0에 대한 문입니다.

MySQL Server 8.0 Docs에서 다음에 대한 구문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색인:

MySQL Workbench에서:

이동:

편집 > Preferences > Modeling > MySQL 입니다.

그런 다음 "Default Target MySQL Version"을 5.7로 설정합니다.

아래 스크린샷을 확인합니다.

MySQL WorkBench Modeling

Workbench에서 : Model > Model Options...> MySQL => "글로벌 설정의 기본값 사용" 선택 취소

5.7 또는 6.3의 대체 버전.6.3을 썼어요.모델>모델 옵션에서..>MySql>6.3

언급URL : https://stackoverflow.com/questions/52785125/mysql-workbench-error-in-query-1064-syntax-error-near-visible-at-line-1

반응형