2017-03-01 160 views
1
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权限

我已经仔细检查并阅读了外键手册,但我仍然无法找到问题出在哪里。

+0

当您尝试创建一个表项目和引用用户ID作为外键和用户表仍未创建时,您面临此错误。您必须重新排序脚本。请检查下面的答案。 –

+0

请标记为已回答,如果它回答您的查询。 –

+0

对不起,你能告诉我哪里是标记按钮吗?谢谢 –

回答

1

当您尝试创建一个表项目和用户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; 
相关问题