所以我有一个错误,当我想添加一个外键。我用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
我搜索了一些解决方案,发现括号很重要或者是反勾号,但是由于代码是由工具创建的,所以对我来说似乎是正确的。什么会导致错误?
7条答案
按热度按时间vsnjm48y1#
在mysql workbench中,当您连接到服务器时,单击主菜单中的“服务器”,然后单击“服务器状态”。
使用“version:x.x”进入eer图标签,单击主菜单中的“edit”和“preferences”,然后在建模部分“mysql”设置您的自定义mysql版本。
eqqqjvef2#
对于任何人来说,在eer diagram model窗口中,您可以设置mysql版本以生成sql脚本。去编辑,首选项,然后建模部分,mysql和设置您的自定义mysql版本。
blmhpbnm3#
我使用的是MySQL5.5.62版本。
线条注解
INDEX 'fk_CUSTOMER_BARBER_idx' ('BARBER_ID' ASC) VISIBLE,
他为我工作。fcwjkofz4#
删除visible关键字,如果代码低于mysql 5.7,则运行代码
7eumitmz5#
谢谢@imnothuman
在macos mysql workbench版本中,您可以在此处设置mysql脚本版本:
从打开的eer图:
模型->模型选项。
mysql选项卡。
取消选中“使用全局设置的默认值”。
在“target mysql version”输入中设置版本。
svmlkihl6#
它可以针对mysql的当前版本和默认版本workbench:
在workbench中更改默认目标版本mysql:
参考->建模->mysql->默认目标mysql版本
mdfafbf17#
检查mysql版本并在以下位置更新:
首选项->建模->mysql->默认目标mysql版本
我的mysql版本是5.7.21。