【问题标题】:Forward Engineering MySQL Workbench Error 1064正向工程 MySQL 工作台错误 1064
【发布时间】:2019-03-08 13:02:49
【问题描述】:

我制作了一个 EER 图,我正在尝试对其进行转发工程,但我收到此错误,但我找不到错误。

在服务器中执行 SQL 脚本 ERROR: Error 1064: You have an error in 你的 SQL 语法;检查与您的 MariaDB 对应的手册 在 'INDEX 附近使用正确语法的服务器版本 fk_User_Wallets1_idx (Wallets_idWallets ASC) 可见,约束' 在第 13 行

SQL 代码:

        CREATE TABLE IF NOT EXISTS `mydb`.`User` (
          `idUser` INT NOT NULL AUTO_INCREMENT,
          `name` VARCHAR(45) NULL,
          `email` VARCHAR(45) NULL,
          `adress` VARCHAR(45) NULL,
          `password` VARCHAR(45) NULL,
          `saldo` INT NULL,
          `date_start` DATETIME NULL,
          `date_end` DATETIME NULL,
          `Rolls_idRolls` INT NOT NULL,
          `Wallets_idWallets` INT NOT NULL,
          PRIMARY KEY (`idUser`, `Rolls_idRolls`, `Wallets_idWallets`),
          INDEX `fk_User_Rolls1_idx` (`Rolls_idRolls` ASC) VISIBLE,
          INDEX `fk_User_Wallets1_idx` (`Wallets_idWallets` ASC) VISIBLE,
          CONSTRAINT `fk_User_Rolls1`
            FOREIGN KEY (`Rolls_idRolls`)
            REFERENCES `mydb`.`Rolls` (`idRolls`)
            ON DELETE NO ACTION
            ON UPDATE NO ACTION,
          CONSTRAINT `fk_User_Wallets1`
            FOREIGN KEY (`Wallets_idWallets`)
            REFERENCES `mydb`.`Wallets` (`idWallets`)
            ON DELETE NO ACTION
            ON UPDATE NO ACTION)
        ENGINE = InnoDB

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

Fetching back view definitions in final form.
Nothing to fetch

【问题讨论】:

  • 结束括号是否意味着在查询的末尾? ON UPDATE NO ACTION) ENGINE = InnoDB 似乎结束部分在创建语句 ENGINE = InnoDB 之外浮动。
  • 你应该检查你的mysql版本中是否有不可见的索引。你在哪个版本? mysqlserverteam.com/mysql-8-0-invisible-indexes
  • (unrelated) 这个 PK 看起来很奇怪:PRIMARY KEY (idUser, Rolls_idRolls, Wallets_idWallets) -- 因为idUser 在逻辑上是唯一的,而PRIMARY KEY 意味着唯一 --为什么列出了其他列?

标签: mysql sql mariadb mysql-workbench


【解决方案1】:

在您转发工程之前,请勾选以下选项并继续该过程,

转到选项部分> 在要创建的数据库的设置选项下

  • 跳过创建外键
  • 也跳过创建索引
  • 生成单独的创建索引语句
  • 为表生成插入语句

并继续前向工程过程。

【讨论】:

  • 您能解释一下您的解决方案吗?问题是什么?您提出的解决方案如何解决?
【解决方案2】:

这是mysql版本问题 去掉VISIBLE。并手动运行代码。或者将mysql服务器和客户端更新到相同的版本。 (Wallets_idWalletsASC) 可见到 (Wallets_idWalletsASC)

【讨论】:

    【解决方案3】:

    你能添加引擎吗

    ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

    【讨论】:

    • 这如何解决问题?
    猜你喜欢
    • 2015-11-09
    • 2019-05-04
    • 2014-12-19
    • 2020-08-05
    • 2019-03-11
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多