错误代码:1452。无法添加或更新子行:外键约束失败

时间:2016-10-28 06:22:43

标签: mysql

首先,让我为不理解已经提到这个问题的答案而道歉,并呼吁耐心等待那些会说"这已经得到了回答,请阅读给出的答案"。我已经梳理了这个网站,并阅读了给出的每一个答案 - 但我仍然很沮丧。这是我的整个查询和我得到的错误:

CREATE DATABASE flghtreservation;

use flghtreservation;

CREATE TABLE Passenger
(
  Fname varchar (20) NOT NULL,
  Lname varchar (30) NOT NULL,
  Passenger_id varchar (6) Not NULL,
  Phone_number varchar (20) NOT NULL,
  Email_address varchar (20) NOT NULL,
  Gender varchar (5) NOT NULL,
  Fopayment varchar (15),
  PRIMARY KEY (Passenger_id)
);

CREATE TABLE Airlines
(
  Airline_name char (30) NOT NULL,
  Airline_no INT NOT NULL,
  PRIMARY KEY (Airline_no)
);

CREATE TABLE Airports
(
  Airport_code char (3) NOT NULL,
  Airport_name varchar (50) not null,
  City varchar (20) NOT NULL,
  State varchar (15) NOT NULL,
  PRIMARY KEY (Airport_code)
);

CREATE TABLE Routes
(
  Route_no varchar (8) NOT NULL,
  Route_descrip varchar (30) NOT NULL,
  PRIMARY KEY (Route_no)
);

CREATE TABLE Flights
(
  Flight_no INT NOT NULL,
  Airline_code char (5) NULL,
  Departure_AirportCode char (5) NOT NULL,
  Depature_date date NOT NULL,
  Arrival_AirportCode char (5) Not NULL,
  Arrival_date date not null,
  Price  decimal (5,2),
  Airline_no INT NOT NULL,
  Route_no varchar (8) NOT NULL,
  PRIMARY KEY (Flight_no),
  FOREIGN KEY (Airline_no) REFERENCES Airlines(Airline_no),
  FOREIGN KEY (Route_no) REFERENCES Routes(Route_no)
);

CREATE TABLE Fare
(
  Fare_type varchar (3) NOT NULL,
  Fare_descrip varchar (15) NOT NULL,
  Route_no varchar (8) Not nulL,
  PRIMARY KEY (Fare_type),
  FOREIGN KEY (Route_no) REFERENCES Routes(Route_no)
);


CREATE TABLE TicketInfo
(
  Confirmation_no varchar (10) NOT NULL,
  Lname varchar (30) NOT NULL,
  Passenger_id varchar (6) NOT NULL,
  Fare_type varchar (3) NOT NULL,
  Flight_no INT NOT NULL,
  PRIMARY KEY (Confirmation_no),
  FOREIGN KEY (Passenger_id) REFERENCES Passenger(Passenger_id),
  FOREIGN KEY (Flight_no) REFERENCES Flights(Flight_no));

insert into Passenger values
("Taylor", "Amanda", 'B0011', '(952)-659-0259', 'AT11@hotmal.com', 'F', "Visa"),
("Smith", "Adam",   'B0012', '(763)-555-0229', 'AS12@gmail.com', 'M', "Master"),
("Jeffries", "Daneil", 'B0013', '(214)-659-7885', 'JD13@yahoo.com', 'M', "Visa"),
("Hassan", "Aisha", 'B0014', '(612)-159-0099', 'AH14@hotmal.com', 'F', "Master"),
("Mohammad", "Nivi", 'B0015', '(204)-541-0201', 'NM15@hotmal.com', 'F', "Visa");


Insert into Airlines values
("Southwest Airlines", 001),
("Delta Airlines", 005),
("American Airlines", 003),
("United Airlines", 004),
("Sun Country", 002);

Insert into Airports values
('ATL', "Hartsfield Jackson Atlanta International", "Atlanta", "Goergia"),
('MSP', "Minneapolis-St Paul International", "Minneapolis", "Minnesota"),
('ORD', "Chicago O’Hare International", "Chicago", "Illinois"),
('LAX', "Los Angeles International", "Los Angeles", "California"),
('JFK', "John F Kennedy International", "New York", "New York"),
('SFO', "San Francisco International", "San Francisco", "California"),
('DFW', "Dallas Fort Worth International", "Dallas-Fort Worth", "Texas"),
('DEN', "Denver International", "Denver", "Colorado"),
('LAS', "McCarran International", "Las Vegas", "Nevada"),
('MCO', "Orlando International", "Orlando", "Florida");

insert into Routes values

('RTE01', "North America Mid West Route"),
('RTE02', "North America North East Route"),
('RTE03', "North America East Coast Route"),
('RTE04', "North America West Coast Route");

Insert into Flights values
(111, "SW", "ATL","2016-08-02", "MSP", "2016-08-20", 321.50, 001, 'RTE01'),
(112, "SW", "ATL","2016-08-03", "MSP", "2016-08-21", 250.50, 001, 'RTE01'),
(511, "DL", "ATL","2016-08-02", "MSP", "2016-08-20", 390.50, 005, 'RTE01'),
(312, "AA", "MSP","2016-09-02", "JFK", "2016-09-14", 467.50, 003, 'RTE02'),
(512, "DL", "MSP","2016-09-02", "JFK", "2016-09-14", 500.50, 005, 'RTE02'),
(411, "UA", "MSP","2016-09-02", "JFK", "2016-09-14", 350.50, 004, 'RTE02'),
(211, "SC", "MSP","2016-09-05", "DFW", "2016-09-20", 400.50, 002, 'RTE03'),
(513, "DL", "MSP","2016-09-05", "DFW", "2016-09-20", 430.50, 005, 'RTE03'),
(414, "UA", "MSP","2016-09-05", "DFW", "2016-09-20", 390.50, 004, 'RTE03'),
(113, "SW", "MSP","2016-09-04", "DEN", "2016-09-15", 540.50, 001, 'RTE02'),
(514, "DL", "MSP","2016-09-04", "DFW", "2016-09-15", 600.50, 005, 'RTE02'),
(413, "UA", "SFO","2016-09-05", "ORD", "2016-09-15", 570.50, 004, 'RTE01'),
(114, "SW", "SFO","2016-09-05", "ORD", "2016-09-15", 400.50, 001, 'RTE03'),
(515, "DL", "MSP","2016-09-06", "LAS", "2016-09-14", 410.50, 005, 'RTE04'),
(313, "AA", "MSP","2016-09-06", "LAS", "2016-09-14", 395.50, 003, 'RTE04'),
(212, "SC", "MSP","2016-09-06", "LAS", "2016-09-14", 350.50, 002, 'RTE04'),
(516, "DL", "MSP","2016-09-10", "MCO", "2016-09-20", 580.50, 002, 'RTE03'),
(416, "UA", "MSP","2016-09-10", "MCO", "2016-09-20", 470.50, 002, 'RTE03'),
(315, "AA", "MSP","2016-09-05", "MCO", "2016-09-20", 470.50, 002, 'RTE03'),
(115, "SW", "MSP","2016-09-05", "MCO", "2016-09-20", 410.50, 002, 'RTE03'),
(214, "SC", "MSP","2016-09-05", "MCO", "2016-09-20", 400.50, 002, 'RTE03'),
(215, "SC", "MSP","2016-10-05", "LAX", "2016-10-10", 410.50, 002, 'RTE03'),
(517, "DL", "MSP","2016-10-05", "LAX", "2016-09-10", 520.50, 002, 'RTE03'),
(415, "UA", "MSP","2016-10-05", "LAX", "2016-10-15", 400.50, 002, 'RTE03');

insert into Fare values
('B1', "Business Class", 'RTE01'),
('B2', "Business Class", 'RTE02'),
('B3', "Business Class", 'RTE03'),
('B4', "Business Class", 'RTE04'),
('F1', "First Class", 'RTE01'),
('F2', "First Class", 'RTE02'),
('F3', "First Class", 'RTE03'),
('F4', "First Class", 'RTE04'),
('E1', "Economy Class", 'RTE01'),
('E2', "Economy Class", 'RTE02'),
('E3', "Economy Class", 'RTE03'),
('E4', "Economy Class", 'RTE04');

insert into TicketInfo values
('DL501', "Taylor", 'B0011', 'B1', 511),
('AA300', "Smith",   'B0012',  'E2', 311),
('SW100', "Jeffries", 'B0013', 'F1', 113),
('UA400', "Hassan", 'B0014', 'E3', 414),
('SC200', "Mohammad", 'B0015', 'B2', 212);
  

错误代码:1452。无法添加或更新子行:外键   约束失败(flghtreservationticketinfo,CONSTRAINT   ticketinfo_ibfk_2外键(Flight_no)参考flights   (Flight_no))

我查看了分配给" Flight_no"的数据类型。它们是一样的,我没有看到任何可能没有匹配的地方。我知道我错过了一些东西,但是最后两天不能通过这个网站搞清楚是什么。所以我需要帮助,我很快就需要它。

非常感谢所有人花时间阅读并协助。

3 个答案:

答案 0 :(得分:0)

在航班号表中缺少航班表中的记录,航班号为311,在TicketInfo的第二行中引用

('AA300', "Smith",   'B0012',  'E2', 311)

答案 1 :(得分:0)

在添加到TicketInfo表之前,航班号必须存在于航班表中才能使用。

错误在这一行:

  

(' AA300'," Smith",' B0012',' E2',311),

答案 2 :(得分:0)

是的,是一个参考问题。

您尚未在表航班中插入以311开头的记录,然后,当您插入此('AA300',“Smith”,'B0012','E2'时表 TicketInfo 中的,311) ...跳转异常。

两个选项:

  1. 在表航班中添加以311开头的新记录。
  2. 更改表 TicketInfo 的此记录('AA300',“Smith”,'B0012','E2',311)的参考311 存在于表航班