mysql错误1064

3b6akqbq  于 2021-06-20  发布在  Mysql
关注(0)|答案(7)|浏览(566)

所以我有一个错误,当我想添加一个外键。我用eer图模型在mysql工作台中添加了外键。workbench尝试添加的行包括:`

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;

我得到的错误是:

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

我搜索了一些解决方案,发现括号很重要或者是反勾号,但是由于代码是由工具创建的,所以对我来说似乎是正确的。什么会导致错误?

vsnjm48y

vsnjm48y1#

在mysql workbench中,当您连接到服务器时,单击主菜单中的“服务器”,然后单击“服务器状态”。
使用“version:x.x”进入eer图标签,单击主菜单中的“edit”和“preferences”,然后在建模部分“mysql”设置您的自定义mysql版本。

eqqqjvef

eqqqjvef2#

对于任何人来说,在eer diagram model窗口中,您可以设置mysql版本以生成sql脚本。去编辑,首选项,然后建模部分,mysql和设置您的自定义mysql版本。

blmhpbnm

blmhpbnm3#

我使用的是MySQL5.5.62版本。
线条注解 INDEX 'fk_CUSTOMER_BARBER_idx' ('BARBER_ID' ASC) VISIBLE, 他为我工作。

fcwjkofz

fcwjkofz4#

删除visible关键字,如果代码低于mysql 5.7,则运行代码

7eumitmz

7eumitmz5#

谢谢@imnothuman
在macos mysql workbench版本中,您可以在此处设置mysql脚本版本:
从打开的eer图:
模型->模型选项。
mysql选项卡。
取消选中“使用全局设置的默认值”。
在“target mysql version”输入中设置版本。

svmlkihl

svmlkihl6#

它可以针对mysql的当前版本和默认版本workbench:
在workbench中更改默认目标版本mysql:
参考->建模->mysql->默认目标mysql版本

mdfafbf1

mdfafbf17#

检查mysql版本并在以下位置更新:
首选项->建模->mysql->默认目标mysql版本
我的mysql版本是5.7.21。

相关问题