我想在mysql中运行我的脚本,但是在我运行它的时候它一直显示这个!!!第18行出现错误1215(hy000):无法添加外键约束

x7yiwoj4  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(423)

下面是我的代码,请看一下并帮我指出解决方案。我正在尝试创建数据库并用于我的spring boot项目。

DROP DATABASE IF EXISTS recipeDb;
CREATE DATABASE recipeDb;

USE recipeDb;

DROP TABLE IF EXISTS recipe;
CREATE TABLE recipe (
id int NOT NULL,
recipeTitle varchar(30),
description varchar(255),
cookTime int,
ingredientID int,
stepID int,

PRIMARY KEY(id)
);

ALTER TABLE recipe
ADD FOREIGN KEY (ingredientID) REFERENCES ingredient(id);
ADD FOREIGN KEY (stepID) REFERENCES step(id);

DROP TABLE IF EXISTS category;
CREATE TABLE category (
id int NOT NULL,
categoryTitle varchar(20),

PRIMARY KEY(id)
);

DROP TABLE IF EXISTS recipe_category;
CREATE TABLE recipe_category (
recipeID int,
categoryID int
);

DROP TABLE IF EXISTS step;
CREATE TABLE step (
id int NOT NULL,
stepDesctiption varchar(255),

PRIMARY KEY(id)
);

DROP TABLE IF EXISTS ingredient;
CREATE TABLE ingredient (
id int NOT NULL,
ingredientName varchar(255),

PRIMARY KEY(id)
);
brqmpdu1

brqmpdu11#

您正在尝试添加一个外键,该外键引用了一个尚不存在的表。
您需要先为引用的表创建表。或者,将外键添加到脚本的末尾。

6tdlim6h

6tdlim6h2#

尝试将alter表移到代码的底部

ALTER TABLE recipe
ADD FOREIGN KEY (ingredientID) REFERENCES ingredient(id),
ADD FOREIGN KEY (stepID) REFERENCES step(id),

编辑
把外键加到你的密码里怎么样 CREATE TABLE . 把它也移到代码的底部。

DROP TABLE IF EXISTS recipe;
CREATE TABLE recipe (
id int NOT NULL,
recipeTitle varchar(30),
description varchar(255),
cookTime int,
ingredientID int FOREIGN KEY REFERENCES ingredient(id),
stepID int FOREIGN KEY REFERENCES step(id),

PRIMARY KEY(id)
);

相关问题