Mysql 使用外键创建表时出错
像这样的问题很多,但我在其中找不到答案 你能告诉我这里怎么了吗?该脚本是由mysql Workbench创建的,但除了答案之外,它没有其他功能Mysql 使用外键创建表时出错,mysql,foreign-keys,mariadb,mysql-workbench,Mysql,Foreign Keys,Mariadb,Mysql Workbench,像这样的问题很多,但我在其中找不到答案 你能告诉我这里怎么了吗?该脚本是由mysql Workbench创建的,但除了答案之外,它没有其他功能 -- MySQL Script generated by MySQL Workbench -- Mon Nov 26 14:14:46 2018 -- Model: New Model Version: 1.0 -- MySQL Workbench Forward Engineering SET @OLD_UNIQUE_CHECKS=@@UNIQ
-- MySQL Script generated by MySQL Workbench
-- Mon Nov 26 14:14:46 2018
-- Model: New Model Version: 1.0
-- MySQL Workbench Forward Engineering
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`Owner`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`Owner` ;
CREATE TABLE IF NOT EXISTS `mydb`.`Owner` (
`OwnerId` CHAR(36) NOT NULL,
`Name` NVARCHAR(60) NOT NULL,
`DateOfBirth` DATE NOT NULL,
`Adress` NVARCHAR(100) NOT NULL,
PRIMARY KEY (`OwnerId`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Account`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`Account` ;
CREATE TABLE IF NOT EXISTS `mydb`.`Account` (
`AccountId` CHAR(36) NOT NULL,
`DateCreated` DATE NOT NULL,
`AccountType` VARCHAR(45) NOT NULL,
`OwnerId` CHAR(36) NULL,
PRIMARY KEY (`AccountId`),
INDEX `fk_Account_Owner_idx` (`OwnerId` ASC) VISIBLE,
CONSTRAINT `fk_Account_Owner`
FOREIGN KEY (`OwnerId`)
REFERENCES `mydb`.`Owner` (`OwnerId`)
ON DELETE RESTRICT
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;
给定的错误是
错误代码:1064。您的SQL语法有错误;检查
手动它对应于您的MariaDB服务器版本,以便使用正确的语法 近“约束”
fk\U帐户\u所有者
外键(OwnerId
)参考第7行的“myd”
另一个需要在MySQL Workbench中去掉VISIBLE一词的例子是: 转到: 编辑>首选项>建模>MySQL 然后,将“默认目标MySQL版本”设置为5.7
从可能的重复也,重复的:可能的重复但是工作台创建的脚本不应该是正确的吗??我正在尝试你现在写的东西。事实上,真正的罪魁祸首不是VISIBLE关键字,而是为建模而设置的服务器版本(请参见模型首选项)。@johny66554-Workbench由Oracle构建,最新版本的目标是最新版本的MySQL(8.0),它有一个新的关键字
VISIBLE
。由于Workbench似乎希望积极地包含这个词,所以它会在MySQL的所有旧版本以及MariaDB的所有版本中导致错误。这个论坛到处都是这个问题。尝试过,但没有帮助。还是完全一样的问题。