【发布时间】:2015-02-04 22:31:56
【问题描述】:
我正在帮助一个朋友处理他的数据库,为他排除错误,它不断生成 Mysql 错误 1452 - 无法添加或更新子行:外键约束失败。
知道这是怎么回事吗?我一直在看它一个小时,无法找出一直失败的原因。
编辑:更新代码
--删除表格
删除表评论;
DROP TABLE Boardgames_Owned;
DROP TABLE 棋盘游戏;
DROP TABLE 存储;
DROP TABLE 朋友;
创建表评论(ReviewerID int(4) NOT NULL、Score varchar(10)、cmets varchar(50) NOT NULL、Date_of_review varchar(10) NOT NULL、CONSTRAINT PKReviewerID PRIMARY KEY (ReviewerID));
CREATE TABLE Boardgames_owned ( Game_Name varchar(50) NOT NULL, time_played varchar(24), TTM_Ratio char(12), Total_Cost char(12) NOT NULL, Score char(10), Expansion_pack char(3), BoughtID int( 4) NOT NULL, CONSTRAINT PKBoughtID PRIMARY KEY (BoughtID));
CREATE TABLE Boardgames (Price decimal(12,2) NOT NULL, pre_order char(3), GameName varchar(50), CONSTRAINT PKGameName PRIMARY KEY (GameName));
CREATE TABLE Store (StoreID int(4) NOT NULL, StoreName varchar(50) NOT NULL, price_avg decimal(12,2) NOT NULL, CONSTRAINT PKStoreID PRIMARY KEY (StoreID));
CREATE TABLE Friends (StoreID int(4) NOT NULL, BoughtID int(4) NOT NULL, ReviewerID int(4) NOT NULL, Faddress varchar(50), Ffirstname varchar(20) NOT NULL, Flastname varchar(15) NOT NULL, Time_availible char(8) NOT NULL, Perfered_genre char(10), Money_spent decimal(12,2) NOT NULL, GameName varchar(50), CONSTRAINT PKFristname PRIMARY KEY (Ffirstname), CONSTRAINT FKStoreID FOREIGN KEY (StoreID) REFERENCES Store(StoreID), CONSTRAINT FKGameName FOREIGN KEY (GameName) REFERENCES Boardgames(GameName), CONSTRAINT FKBoughtID 外键 (BoughtID) 参考 Boardgames_owned(BoughtID),约束 FKReviewerID FOREIGN KEY (ReviewerID) REFERENCES 评论(ReviewerID));
--填充评论表
插入评论(评论者 ID、分数、评论、评论日期) 价值观 (1112, '5.0', '需要呻吟', '05-17-20');
插入评论(评论者 ID、分数、评论、评论日期) 价值观 (1113, '5.0', '需要呻吟', '05-17-20');
插入评论(评论者 ID、分数、评论、评论日期) 价值观(1114, '5.0', '需要呻吟', '05-17-20');
插入评论(评论者 ID、分数、评论、评论日期) 价值观 (1115, '5.0', '需要呻吟', '05-17-20');
插入评论(评论者 ID、分数、评论、评论日期) 价值观 (1116, '5.0', '需要呻吟', '05-17-20');
插入评论(评论者 ID、分数、评论、评论日期) 价值观 (1117, '5.0', '需要呻吟', '05-17-20');
--填充 boardgames_owned
INSERT INTO boardgames_owned(Game_Name、time_played、TTM_Ratio、Total_Cost、Score、Expansion_pack、BoughtID) 值('braka', '20.00', '1.1', '1.2', '1.3', '是的', 第1234章;
INSERT INTO boardgames_owned(Game_Name、time_played、TTM_Ratio、Total_Cost、Score、Expansion_pack、BoughtID) 值('braka', '20.00', '1.1', '1.2', '1.3', '是的', 第1235章;
INSERT INTO boardgames_owned(Game_Name、time_played、TTM_Ratio、Total_Cost、Score、Expansion_pack、BoughtID) 值('braka', '20.00', '1.1', '1.2', '1.3', '是的', 第1237章;
INSERT INTO boardgames_owned(Game_Name、time_played、TTM_Ratio、Total_Cost、Score、Expansion_pack、BoughtID) 值('braka', '20.00', '1.1', '1.2', '1.3', '是的', 第1236章;
INSERT INTO boardgames_owned(Game_Name、time_played、TTM_Ratio、Total_Cost、Score、Expansion_pack、BoughtID) 值('braka', '20.00', '1.1', '1.2', '1.3', '是的', 第1238章);
INSERT INTO boardgames_owned(Game_Name、time_played、TTM_Ratio、Total_Cost、Score、Expansion_pack、BoughtID) 值('braka', '20.00', '1.1', '1.2', '1.3', '是的', 第1239章;
--填充棋盘游戏
INSERT INTO 棋盘游戏(价格、预购、游戏名称) 值(25.99,'是', 'ml2');
INSERT INTO 棋盘游戏(价格、预购、游戏名称) 值(25.99,'是', 'ml2');
INSERT INTO 棋盘游戏(价格、预购、游戏名称) 价值观(24.99'是', 'ml2');
INSERT INTO 棋盘游戏(价格、预购、游戏名称) 值(23.99,'是', 'ml2');
INSERT INTO 棋盘游戏(价格、预购、游戏名称) 值(22.99,'是', 'ml2');
INSERT INTO 棋盘游戏(价格、预购、游戏名称) 值(21.99,'是', 'ml2');
--填充商店
INSERT INTO 商店(StoreID、StoreName、price_avg) VALUES (1112,'bars',20.99);
INSERT INTO 商店(StoreID、StoreName、price_avg) VALUES (1113,'bars',20.99);
INSERT INTO 商店(StoreID、StoreName、price_avg) VALUES (1114,'bars',20.99);
INSERT INTO 商店(StoreID、StoreName、price_avg) VALUES (1115,'bars',20.99);
INSERT INTO 商店(StoreID、StoreName、price_avg) VALUES (1116,'bars',20.99);
--填充好友表
插入好友(Faddress、Ffirstname、Flastname、Time_availible、Perfered_genre、Money_spent、GameName) 价值观 (1111, 1234, 1234, '1234 scryamor blvd.', '亚当', “史密斯”, '5:00 PM', '角色扮演游戏', 25, '探路者');
插入好友(StoreID、BoughtID、ReviewerID、Faddress、Ffirstname、Flastname、Time_availible、Perfered_genre、Money_spent、GameName) 价值观 (1111, 1234, 1234, '戈德杰里路 5678 号', '布拉克', '所以', '3:00 PM', '战争', 60, '风险');
插入好友(StoreID、BoughtID、ReviewerID、Faddress、Ffirstname、Flastname、Time_availible、Perfered_genre、Money_spent、GameName) 价值观 (1111, 1234, 1234, '西大街 1337 号', “彼得”, 'kliage', '下午 2:00', '战争', 13, '维斯特洛之战');
插入好友(StoreID、BoughtID、ReviewerID、Faddress、Ffirstname、Flastname、Time_availible、Perfered_genre、Money_spent、GameName) 价值观 (1111, 1234, 1234, '101 Vault 博士', “奥利弗”, '灼热', '5:00 PM', '卡片', 45, '芒奇金');
插入好友(StoreID、BoughtID、ReviewerID、Faddress、Ffirstname、Flastname、Time_availible、Perfered_genre、Money_spent、GameName) 价值观 (1111, 1234, 1234, '117 Sierra rd.', '约翰', '首席', '9:00 PM', '恐怖', 00, '阿卡姆恐怖');
插入好友(StoreID、BoughtID、ReviewerID、Faddress、Ffirstname、Flastname、Time_availible、Perfered_genre、Money_spent、GameName) 价值观 (1111, 1234, 1234, '1489 klesa blvd.', '梅丽莎', '达里亚', '11:00 AM', '骰子', 24, '漫威骰子大师');
插入好友(StoreID、BoughtID、ReviewerID、Faddress、Ffirstname、Flastname、Time_availible、Perfered_genre、Money_spent、GameName) 价值观 (1111, 1234, 1234, '113 米卡尔赫兹路', '凯蒂琳', '塞尼亚', '5:00 PM', '战争', 10, '战吼');
插入好友(StoreID、BoughtID、ReviewerID、Faddress、Ffirstname、Flastname、Time_availible、Perfered_genre、Money_spent、GameName) 价值观 (1111, 1234, 1234, '546 Alkatraz 博士', “文森特”, '恩斯特罗姆', '晚上 7 点 30 分', '卡片', 40, “指环王:纸牌游戏”);
-- 旧代码--
--DROP TABLES
DROP TABLE Reviews;
DROP TABLE Boardgames_Owned;
DROP TABLE Boardgames;
DROP TABLE Store;
DROP TABLE Friends;
CREATE TABLE Reviews ( ReviewerID int(4) NOT NULL, Score decimal(2,2), comments varchar(50) NOT NULL, Date_of_review varchar(10) NOT NULL, CONSTRAINT PKReviewerID PRIMARY KEY (ReviewerID));
CREATE TABLE Boardgames_owned ( Game_Name varchar(50) NOT NULL, time_played varchar(24), TTM_Ratio decimal(12,2), Total_Cost decimal(12,2) NOT NULL, Score decimal(10,10), Expansion_pack char(3), BoughtID int(4) NOT NULL, CONSTRAINT PKBoughtID PRIMARY KEY (BoughtID));
CREATE TABLE Boardgames ( Price decimal(12,2) NOT NULL, pre_order char(3), GameName varchar(50), CONSTRAINT PKGameName PRIMARY KEY (GameName));
CREATE TABLE Store ( StoreID int(4) NOT NULL, StoreName varchar(50) NOT NULL, price_avg decimal(12,2) NOT NULL, CONSTRAINT PKStoreID PRIMARY KEY (StoreID));
CREATE TABLE Friends ( StoreID int(4) NOT NULL, BoughtID int(4) NOT NULL, ReviewerID int(4) NOT NULL, Faddress varchar(50), Ffirstname varchar(20) NOT NULL, Flastname varchar(15) NOT NULL, Time_availible char(8) NOT NULL, Perfered_genre char(10), Money_spent decimal(12,2) NOT NULL, GameName varchar(50), CONSTRAINT PKFfristname PRIMARY KEY (Ffirstname), CONSTRAINT FKStoreID
FOREIGN KEY (StoreID) REFERENCES Store(StoreID), CONSTRAINT FKGameName
FOREIGN KEY (GameName) REFERENCES Boardgames(GameName), CONSTRAINT FKBoughtID
FOREIGN KEY (BoughtID) REFERENCES Boardgames_owned(BoughtID), CONSTRAINT FKReviewerID
FOREIGN KEY (ReviewerID) REFERENCES Reviews(ReviewerID));
--Populating friends table
INSERT INTO friends (Faddress, Ffirstname, Flastname, Time_availible, Perfered_genre, Money_spent, GameName)
VALUES (1111,1234,1234,'1234 scryamor blvd.','Adam','Smith','5:00pm','RPG',25.00,'Pathfinder');
INSERT INTO friends (StoreID, BoughtID, ReviewerID, Faddress, Ffirstname, Flastname, Time_availible, Perfered_genre, Money_spent, GameName)
VALUES (1111,1234,1234,'5678 Goldjerry rd.','Brak','So','3:00pm','War',60.00,'Risk');
INSERT INTO friends (StoreID, BoughtID, ReviewerID, Faddress, Ffirstname, Flastname, Time_availible, Perfered_genre, Money_spent, GameName)
VALUES (1111,1234,1234,'1337 West ave.','Peter','kliage','2:00pm','War',13.00,'War for Westeros');
INSERT INTO friends (StoreID, BoughtID, ReviewerID, Faddress, Ffirstname, Flastname, Time_availible, Perfered_genre, Money_spent, GameName)
VALUES (1111,1234,1234,'101 Vault dr.','Oliver','Sear','5:00pm','Card',45.00,'Munchkin');
INSERT INTO friends (StoreID, BoughtID, ReviewerID, Faddress, Ffirstname, Flastname, Time_availible, Perfered_genre, Money_spent, GameName)
VALUES (1111,1234,1234,'117 Sierra rd.','John','Chief','9:00pm','Horror',00.00,'Arkham Horror');
INSERT INTO friends (StoreID, BoughtID, ReviewerID, Faddress, Ffirstname, Flastname, Time_availible, Perfered_genre, Money_spent, GameName)
VALUES (1111,1234,1234,'1489 klesa blvd.','Melissa','Darya','11:00am','Dice',24.50,'Marvel Dice Masters');
INSERT INTO friends (StoreID, BoughtID, ReviewerID, Faddress, Ffirstname, Flastname, Time_availible, Perfered_genre, Money_spent, GameName)
VALUES (1111,1234,1234,'113 Mikalhertz rd','Catilyn','Senja','5:00pm','War',10.00,'BattleCry');
INSERT INTO friends (StoreID, BoughtID, ReviewerID, Faddress, Ffirstname, Flastname, Time_availible, Perfered_genre, Money_spent, GameName)
VALUES (1111,1234,1234,'546 Alkatraz dr.','Vincent','Engstrom','7:30pm','Card',40.00,'Lord Of The Rings: The Card Game');
*/
【问题讨论】: