mysql工作台:查询错误(1064):第1行“可见”附近的语法错误

mbjcgjjk  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(404)

知道为什么吗 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_UNIQUEsetting ( code asc)查询中的可见错误(1064):第1行“可见”附近的语法错误
创建唯一索引 uuid_UNIQUEsetting ( uuid asc)查询中的可见错误(1064):第1行“可见”附近的语法错误
如果我删除没有错误 VISIBLE 但是mysql workbench 8.0.12会自动生成这个。我怎样才能阻止mysql workbench这么做呢?
我的ubuntu 18.04中的mysql信息:
mysql版本:5.7.23-0ubuntu0.18.04.1,通过php扩展mysqli

r1zk6ea1

r1zk6ea11#

在工作台中:模型>模型选项…>mysql=>取消选中“使用全局设置的默认值”

ql3eal8s

ql3eal8s2#

5.7或6.3的替代版本。我用了6.3。在模型>模型选项>mysql>6.3上

igsr9ssn

igsr9ssn3#

这里的问题是不同mysql服务器版本的语法不同。mysql workbench 8.0.12似乎是自动生成的 CREATE UNIQUE INDEX mysql server 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 索引:
在mysql workbench中:
去:
编辑>首选项>建模>mysql。
然后,将“default target mysql version”设置为5.7
查看下面的屏幕截图:

相关问题