mysql:错误1217(23000):无法删除或更新父行:外键约束失败
问题描述:
drop table if exists Users;
drop table if exists Item;
drop table if exists Bid;
drop table if exists Category;
create table Users (
userID varchar(200),
rating integer,
location varchar(255),
country varchar(150),
PRIMARY KEY(userID)
);
create table Item (
itemID integer,
name varchar(100),
currently float,
buy_price float,
first_bid float,
started timestamp,
ends timestamp,
userID varchar(200),
description varchar(255),
PRIMARY KEY(itemID),
FOREIGN KEY (userID) REFERENCES Users(userID)
);
create table Bid (
itemID integer,
userID varchar(200),
time varchar(180),
amount float,
PRIMARY KEY(itemID,time),
FOREIGN KEY (userID) REFERENCES Users(userID),
FOREIGN KEY (itemID) REFERENCES Item(itemID)
);
create table Category(
itemID integer,
categoryID varchar(220),
PRIMARY KEY(itemID,categoryID),
FOREIGN KEY (itemID) REFERENCES Item(itemID)
);
我有一个名为klyu的数据库。以上是一个名为create.sql文件,当我运行mysql:错误1217(23000):无法删除或更新父行:外键约束失败
source create.sql
在MySQL中,它返回
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.17 sec)
ERROR 1050 (42S01): Table 'Users' already exists
ERROR 1050 (42S01): Table 'Item' already exists
Query OK, 0 rows affected (0.03 sec)
Query OK, 0 rows affected (0.02 sec)
我看到一些人说,通过使用SHOW ENGINE INNODB状态检查这一下降失败后,但是,当我运行这个,它说错误1227(42000):访问被拒绝;您需要用于此操作的PROCESS权限
我已经仔细检查并阅读了外键手册,但我仍然无法找到问题出在哪里。
答
当您尝试创建一个表项目和用户ID作为外键并且用户表仍未创建的引用时,您正面临此错误。请参阅 - MySQL - FOREIGN KEY Constraints Documentation:
您必须对脚本重新排序。
drop table if exists Item;
drop table if exists Users;
drop table if exists Bid;
drop table if exists Category;
create table Users (
userID varchar(200),
rating integer,
location varchar(255),
country varchar(150),
PRIMARY KEY(userID)
) ENGINE=INNODB;
create table Item (
itemID integer,
name varchar(100),
currently float,
buy_price float,
first_bid float,
started timestamp,
ends timestamp,
userID varchar(200),
description varchar(255),
PRIMARY KEY(itemID),
FOREIGN KEY (userID) REFERENCES Users(userID)
) ENGINE=INNODB;
create table Bid (
itemID integer,
userID varchar(200),
time varchar(180),
amount float,
PRIMARY KEY(itemID,time),
FOREIGN KEY (userID) REFERENCES Users(userID),
FOREIGN KEY (itemID) REFERENCES Item(itemID)
) ENGINE=INNODB;
create table Category(
itemID integer,
categoryID varchar(220),
PRIMARY KEY(itemID,categoryID),
FOREIGN KEY (itemID) REFERENCES Item(itemID)
) ENGINE=INNODB;
当您尝试创建一个表项目和引用用户ID作为外键和用户表仍未创建时,您面临此错误。您必须重新排序脚本。请检查下面的答案。 –
请标记为已回答,如果它回答您的查询。 –
对不起,你能告诉我哪里是标记按钮吗?谢谢 –