MySQLWorkbench正向工程错误。

9

我正在使用 MySql Workbench 8.0 模型,当我点击向前工程并尝试生成我的模型的脚本时,出现以下情况:

Executing SQL script in server
ERROR: Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VISIBLE,
  CONSTRAINT `fk_Compras_Personas`
    FOREIGN KEY (`persona_id`)
    R' at line 9
SQL Code:
        -- -----------------------------------------------------
        -- Table `bd_inventario2018_2`.`compras`
        -- -----------------------------------------------------
        CREATE TABLE IF NOT EXISTS `bd_inventario2018_2`.`compras` (
          `nmcompra` INT(11) NOT NULL,
          `persona_id` INT(11) NOT NULL,
          `fecompra` DATE NOT NULL,
          PRIMARY KEY (`nmcompra`, `persona_id`),
          INDEX `fk_Compras_Personas_idx` (`persona_id` ASC) VISIBLE,
          CONSTRAINT `fk_Compras_Personas`
            FOREIGN KEY (`persona_id`)
            REFERENCES `bd_inventario2018_2`.`personas` (`id`)
            ON DELETE NO ACTION
            ON UPDATE NO ACTION)
        ENGINE = InnoDB
        DEFAULT CHARACTER SET = utf8

SQL script execution finished: statements: 6 succeeded, 1 failed

Fetching back view definitions in final form.
Nothing to fetch

或者当我尝试同步模型时,我会得到以下结果:
Executing SQL script in server
ERROR: Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VISIBLE' at line 4
SQL Code:
        ALTER TABLE `bd_inventario2018_2`.`productos` 
        ADD COLUMN `anchetas_id` INT(11) NOT NULL AFTER `psventa`,
        ADD COLUMN `productoscol` VARCHAR(45) NOT NULL AFTER `anchetas_id`,
        ADD INDEX `fk_productos_Anchetas1_idx` (`anchetas_id` ASC) VISIBLE

SQL script execution finished: statements: 3 succeeded, 1 failed

Fetching back view definitions in final form.
Nothing to fetch

有人知道发生了什么吗?这是一个自动过程,我没有覆盖任何内容。谢谢。

MySQL 5.x不支持INDEX约束的VISIBLE / INVISIBLE选项,只有MySQL 8+支持。只需将其删除,SQL脚本就可以执行。 - Jan
3个回答

15

MySQL Workbench正在生成适用于MySQL 8的脚本(支持新的不可见索引),但您可能没有这个版本。

您需要在模型选项\MySQL\目标MySQL版本或全局中指定您正在使用的MySQL版本,在编辑\首选项\建模\MySQL\目标MySQL版本中设置。


2
我也遇到了同样的问题。我检查了MAMP并更改了Workbench设置以匹配。 - Dean

3

或者,您可以进入MySQL Workbench GUI,点击“编辑”->“首选项”,然后选择“建模”->“MySQL”,更改默认目标MySQL。


2
我遇到了同样的问题,使用的是版本8.0.17。
当在“外键选项”部分未选择任何操作时,关系形成时会出现错误。请确保在生成SQL时跳过(当未选择任何操作时)已被选中。

enter image description here

这应该解决问题!

1
不,这可能与使用MyISAM存储引擎有关。您需要使用InnoDb来启用fk约束和/或您使用的外键选项。 - Jan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接