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

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

知道为什么吗 VISIBLE 下面是引起问题的原因?

  1. CREATE TABLE IF NOT EXISTS `setting` (
  2. `uuid` INT(10) NOT NULL,
  3. `type` VARCHAR(255) NOT NULL,
  4. `code` VARCHAR(255) NOT NULL COMMENT 'An unique name.',
  5. `value` MEDIUMTEXT NULL DEFAULT NULL,
  6. `comment` LONGTEXT NULL DEFAULT NULL,
  7. `created_on` INT UNSIGNED NOT NULL,
  8. `updated_on` INT UNSIGNED NOT NULL,
  9. PRIMARY KEY (`uuid`))
  10. ENGINE = MyISAM
  11. DEFAULT CHARACTER SET = utf8;
  12. CREATE UNIQUE INDEX `name_UNIQUE` ON `setting` (`code` ASC) VISIBLE;
  13. 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 是:

  1. CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name
  2. [index_type]
  3. ON tbl_name (key_part,...)
  4. [index_option]
  5. [algorithm_option | lock_option] ...
  6. key_part: {col_name [(length)] | (expr)} [ASC | DESC]
  7. index_option:
  8. KEY_BLOCK_SIZE [=] value
  9. | index_type
  10. | WITH PARSER parser_name
  11. | COMMENT 'string'
  12. | {VISIBLE | INVISIBLE} /* Notice the option of VISIBLE / INVISIBLE */
  13. index_type:
  14. USING {BTREE | HASH}

然而,这种选择 {VISIBLE | INVISIBLE} 在mysql server 5.7中不可用。来自文档:

  1. CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name
  2. [index_type]
  3. ON tbl_name (key_part,...)
  4. [index_option]
  5. [algorithm_option | lock_option] ...
  6. key_part:
  7. col_name [(length)] [ASC | DESC]
  8. index_option:
  9. KEY_BLOCK_SIZE [=] value
  10. | index_type
  11. | WITH PARSER parser_name
  12. | COMMENT 'string' /* No option of VISIBLE / INVISIBLE */
  13. index_type:
  14. USING {BTREE | HASH}

如果你不想升级到mysql的最新版本;您可以使用禁用自动生成的此功能 VISIBLE / INVISIBLE 索引:
在mysql workbench中:
去:
编辑>首选项>建模>mysql。
然后,将“default target mysql version”设置为5.7
查看下面的屏幕截图:

展开查看全部

相关问题