首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用MySQL工作台添加外键时MySQL错误1064

问用MySQL工作台添加外键时MySQL错误1064
EN

Stack Overflow用户
提问于 2018-08-19 12:46:46
回答 7查看 21.7K关注 0票数 16

所以我有一个错误,当我想要添加一个外键。我在MySQL工作台中添加了一个EER图模型的外键。工作台试图添加的行是:

代码语言:javascript
复制
CREATE SCHEMA IF NOT EXISTS `barberDB` DEFAULT CHARACTER SET latin1 ;
USE `barberDB` ;

-- -----------------------------------------------------
-- Table `barberDB`.`BARBER`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `barberDB`.`BARBER` (
  `ID` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(45) NULL,
  PRIMARY KEY (`ID`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `barberDB`.`CUSTOMER`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `barberDB`.`CUSTOMER` (
  `ID` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(45) NULL,
  `isHaircut` INT NULL,
  `isBeard` INT NULL,
  `isEyebrows` INT NULL,
  `BARBER_ID` INT NOT NULL,
  PRIMARY KEY (`ID`),
  INDEX `fk_CUSTOMER_BARBER_idx` (`BARBER_ID` ASC) VISIBLE,
  CONSTRAINT `fk_CUSTOMER_BARBER`
    FOREIGN KEY (`BARBER_ID`)
    REFERENCES `barberDB`.`BARBER` (`ID`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

我得到的错误是:

代码语言:javascript
复制
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_CUSTOMER_BARBER`
    FOREIGN KEY (`BARBER_ID`)
    REF' at line 12
SQL Code:
        -- -----------------------------------------------------
        -- Table `barberDB`.`CUSTOMER`
        -- -----------------------------------------------------
        CREATE TABLE IF NOT EXISTS `barberDB`.`CUSTOMER` (
          `ID` INT NOT NULL AUTO_INCREMENT,
          `name` VARCHAR(45) NULL,
          `isHaircut` INT NULL,
          `isBeard` INT NULL,
          `isEyebrows` INT NULL,
          `BARBER_ID` INT NOT NULL,
          PRIMARY KEY (`ID`),
          INDEX `fk_CUSTOMER_BARBER_idx` (`BARBER_ID` ASC) VISIBLE,
          CONSTRAINT `fk_CUSTOMER_BARBER`
            FOREIGN KEY (`BARBER_ID`)
            REFERENCES `barberDB`.`BARBER` (`ID`)
            ON DELETE CASCADE
            ON UPDATE CASCADE)
        ENGINE = InnoDB

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

Fetching back view definitions in final form.
Nothing to fetch

我搜索了解决方案,发现括号是重要的或后退的,但是由于代码是由工具创建的,在我看来是正确的。是什么导致了这个错误?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2019-01-23 06:41:37

对于任何查看这一点的人,可以在EER关系图模型窗口中设置想要使用的MySQL版本来生成SQL脚本。转到编辑,首选项,然后建模部分,MySQL,并设置您的自定义MySQL版本。

票数 39
EN

Stack Overflow用户

发布于 2019-03-21 17:52:07

检查您的MySQL版本并在以下内容中进行更新:

Preferences -> Modeling -> MySQL ->默认目标MySQL版本

我的MySQL版本是5.7.21。

票数 10
EN

Stack Overflow用户

发布于 2019-06-25 16:42:47

在MySQL工作台中,当连接到服务器时,单击主菜单中的“服务器”,然后单击“服务器状态”。

使用" version : X.X“转到您的EER关系图标记,单击主菜单和"preferences”中的"Edit“,然后在" MySQL”部分中设置前面使用的自定义MySQL版本。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51917812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档