因此,当我想添加外键时出现错误。我在带有EER图模型的MySQL Workbench中添加了外键。工作台尝试添加的行是:
String command = "abc:/b1c\\xy";
Pattern COMMAND_PATTERN = Pattern.compile("[a-z]{1}[a-z0-9:]*\\/[a-z0-9]*\\\\[a-z]+");
Matcher matcher = COMMAND_PATTERN.matcher(command);
while (matcher.find())
count++;
System.out.println("MATCH COUNT = " + count);
我得到的错误是:
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;
我搜索了解决方案,发现括号很重要或反引号,但是由于代码是由该工具创建的,因此对我来说似乎是正确的。 可能导致错误的原因是什么?
答案 0 :(得分:11)
对于任何看到此内容的人,都可以在EER Diagram Model窗口中设置要用于生成SQL脚本的MySQL版本。转到“编辑”,“首选项”,然后是“ MySQL”“建模”部分,并设置自定义MySQL版本。
答案 1 :(得分:1)
感谢@imnothuman
在 MacOS MySQL Workbench版本中,您可以在此处设置MySQL脚本版本:
来自打开的EER图:
模型->模型选项。
MySQL标签。
取消选中“使用全局设置中的默认设置”。
在“目标MySQL版本”输入中设置版本。
答案 2 :(得分:1)
检查您的MySQL版本并在以下位置进行更新:
首选项->建模-> MySQL->默认目标MySQL版本
我的MySQL版本是5.7.21。
答案 3 :(得分:0)
在MySQL Workbench中,当您连接到服务器时,从主菜单中单击“服务器”,然后单击“服务器状态”。
使用“版本:X.X”转到您的EER图标签,单击主菜单中的“编辑”和“首选项”,然后在“建模”部分的“ MySQL”中设置您以前使用的自定义MySQL版本。
答案 4 :(得分:0)
我正在使用mysql 5.5.62版本。
注释该行
INDEX 'fk_CUSTOMER_BARBER_idx' ('BARBER_ID' ASC) VISIBLE,
确实为我工作。
答案 5 :(得分:0)
它可以是针对当前版本的mysql的默认版本的工作台:
在工作台中更改默认目标版本mysql:
参考->建模-> MySQL->默认目标MySQL版本
答案 6 :(得分:0)
删除VISIBLE关键字并运行代码(如果其低于mysql 5.7)