【问题标题】:Error 1064 when forward engineering a ER diagram in mysql workbench在 mysql 工作台中正向工程 ER 图时出现错误 1064
【发布时间】:2019-05-04 21:49:08
【问题描述】:

我正在尝试在 Workbench 中对 ER 图进行正向工程以创建我的架构,但我遇到了错误。我正在使用适用于 mac 的 mySql Workbench。

这是我收到的错误消息:

 Executing SQL script in server
ERROR: Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '
  INDEX `city_id_fk_idx` (`city_id` ASC) VISIBLE,
  INDEX `county_id_idx` (`cou' at line 13
SQL Code:
        -- -----------------------------------------------------
        -- Table `k00243666_property_bubble`.`addresses`
        -- -----------------------------------------------------
        CREATE TABLE IF NOT EXISTS `k00243666_property_bubble`.`addresses` (
          `address_id` INT NOT NULL AUTO_INCREMENT,
          `address1` VARCHAR(45) NULL,
          `address2` VARCHAR(45) NULL,
          `eircode` VARCHAR(7) NULL,
          `town_id` INT NULL,
          `city_id` INT NULL,
          `county_id` INT NULL,
          PRIMARY KEY (`address_id`),
          INDEX `town_id_fk_idx` (`town_id` ASC) VISIBLE,
          INDEX `city_id_fk_idx` (`city_id` ASC) VISIBLE,
          INDEX `county_id_idx` (`county_id` ASC) VISIBLE,
          CONSTRAINT `town_id_fk`
            FOREIGN KEY (`town_id`)
            REFERENCES `k00243666_property_bubble`.`town` (`town_id`)
            ON DELETE NO ACTION
            ON UPDATE CASCADE,
          CONSTRAINT `city_id_fk`
            FOREIGN KEY (`city_id`)
            REFERENCES `k00243666_property_bubble`.`city` (`city_id`)
            ON DELETE NO ACTION
            ON UPDATE CASCADE,
          CONSTRAINT `county_id`
            FOREIGN KEY (`county_id`)
            REFERENCES `k00243666_property_bubble`.`county` (`county_id`)
            ON DELETE NO ACTION
            ON UPDATE CASCADE)
        ENGINE = InnoDB

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

Fetching back view definitions in final form.
Nothing to fetch

有人知道我为什么会收到这个错误吗?

【问题讨论】:

    标签: mysql database mysql-workbench er-diagrams


    【解决方案1】:

    我的猜测是您的 MariaDB 版本不支持应用于索引定义的 VISIBLEINVISIBLE。在任何情况下,默认情况下索引应该是可见的,因此您甚至不需要指定VISIBLE。尝试使用以下语法:

    INDEX town_id_fk_idx (town_id),
    INDEX city_id_fk_idx (city_id),
    INDEX county_id_idx (county_id)
    

    Here is a link 发送给 MariaDB 的功能请求。似乎没有 INVISIBLE 语法用于关闭优化器的索引。但是,它提供了另一种选择:

    ALTER TABLE addresses DISABLE KEYS;
    

    这将使优化器无法看到所有索引。

    【讨论】:

    • 谢谢,我认为解决了部分问题,现在我得到一个不同的错误:在服务器中执行 SQL 脚本错误:错误 1005:无法创建表 k00243666_property_bubble.user_status (错误号:121“写入或更新时重复键”)
    • @LaurDragulin 欢迎来到 Stack Overflow。该网站不能以这种方式工作。如果您现在遇到的问题与您提出的问题大不相同,那么您需要提出一个新问题。 SO 不是一个博客网站,您可以在其中不断要求跟进。
    • 我把它整理出来了,我也有重复的约束,现在修复它,非常感谢 Tim Biegeleisen
    • 还要感谢这个人stackoverflow.com/a/20512955/10739429,这是我第二个错误的修复。
    猜你喜欢
    • 2019-03-08
    • 2020-08-05
    • 2019-04-01
    • 2015-11-09
    • 2019-03-11
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    • 2019-11-11
    相关资源
    最近更新 更多