【问题标题】:Error Code 1452 When attempting to Alter Table Constraint尝试更改表约束时出现错误代码 1452
【发布时间】:2018-03-08 00:04:25
【问题描述】:
ALTER TABLE `charter`
  ADD CONSTRAINT `charter_ibfk_3` FOREIGN KEY (`CHAR_DESTINATION`) 
  REFERENCES `airport` (`AIRPORT_CODE`);

我正在尝试建立这种关系:

Charter and Airport ERD Diagram

CREATE TABLE `antonellacammarota` (
  `CUS_CODE` int(6) NOT NULL DEFAULT '0',
  PRIMARY KEY (`CUS_CODE`),
  FOREIGN KEY (`CUS_CODE`) REFERENCES `CUSTOMER` (`CUS_CODE`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

insert into customer values (10076, "Cammarota", "Antonella", "T", "805", "555-1212", 0);

insert into antonellacammarota(select cus_code from customer where cus_lname = 'Cammarota');

--
-- Table structure for table `airport`
--

CREATE TABLE IF NOT EXISTS `airport` (
  `AIRPORT_CODE` varchar(3) NOT NULL DEFAULT '0',
  `AIRPORT_NAME` varchar(40) DEFAULT NULL,
  `AIRPORT_ADDRESS` varchar(45) DEFAULT NULL,
  `AIRPORT_CITY` varchar(25) DEFAULT NULL,
  `AIRPORT_STATE` char(2) DEFAULT NULL,
  `AIRPORT_ZIP` varchar(10) DEFAULT NULL,
  `AIRPORT_COUNTRY` varchar(25) DEFAULT NULL,
  `AIRPORT_AREACODE` varchar(3) DEFAULT NULL,
  `AIRPORT_PHONE` varchar(8) DEFAULT NULL,
  PRIMARY KEY (`AIRPORT_CODE`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Constraints for table `airport`
--
ALTER TABLE `charter`
  ADD CONSTRAINT `charter_ibfk_3` FOREIGN KEY (`CHAR_DESTINATION`) REFERENCES `airport` (`AIRPORT_CODE`);


--
-- Dumping data for table `airport`
--

INSERT INTO `airport` (`AIRPORT_CODE`, `AIRPORT_NAME`, `AIRPORT_ADDRESS`, `AIRPORT_CITY`, `AIRPORT_STATE`, 
`AIRPORT_ZIP`, `AIRPORT_COUNTRY`, `AIRPORT_AREACODE`, `AIRPORT_PHONE`) VALUES
('ATL', 'Hartsfield-Jackson Atlanta Int', '6000 N Terminal Pkwy.', 'Atlanta', 'GA', '30320', 'US', '808', '897-1910'),
('BNA', 'Nashville Int', '1 Terminal Dr.', 'Nashville', 'TN', '37214', 'US', '615', '275-1675'),
('GNV', 'Gainesville Regional', '3880 NE 39th Ave.', 'Gainesville', 'FL', '32609', 'US', '352', '373-0249'),
('MOB', 'Mobile Regional', '8400 Airport Blvd.', 'Mobile', 'AL', '36608', 'US', '800', '357-5373'),
('MOY', 'Monterrey', '', 'Monterrey', '', '', 'Columbia', '', ''),
('STL', 'St. Louis Lambert Int', '10701 Lambert International Blvd.', 'St. Louis', 'MO', '63145', 'US', '314', '426-8000'),
('TYS', 'McGhee Tyson', '2055 Alcoa Hwy', 'Alcoa', 'TN', '37701', 'US', '865', '345-3000');

【问题讨论】:

  • 您可能在系统中有错误数据,您必须先处理这些数据,然后才能添加约束。 FK 可能指的是不再存在或从未存在的 PK。
  • 我认为这是一种选择;我现在已经删除了 3 次架构。
  • 请列出您的charter 表的内容。 SELECT CHAR_TRIP, CHAR_DESTINATION FROM charter;
  • 10001 ATL 10002 BNA 10003 GNV 10004 STL 10005 ATL 10006 STL 10007 GNV 10008 Tys 10009 GNV 10010 ATL 10011 BNA 10012 MOMP 10013 Tys 10014 ATL 10015 GNV 10016 MQY 10017 STL 10018 Tys sp6 STL 10016 Tys sp6 STL 10016
  • Stack Overflow 上有很多关于这个错误的问题。最常见的问题是@xQbert 提到的:您的子表中的某些数据在父表中没有匹配的数据。以stackoverflow.com/questions/1253459/… 为例

标签: mysql foreign-keys mysql-error-1452


【解决方案1】:

用它来找出是什么条目搞砸了

SELECT CHAR_TRIP, CHAR_DESTINATION 
FROM charter
WHERE CHAR_DESTINATION NOT IN (
SELECT AIRPORT_CODE FROM airport);

【讨论】:

  • 10016 MQY 已返回;我以为 MQY 是 MOY
  • @AntonellaCammarota 如果它为您解决了问题,请记住将其作为已接受的答案进行检查。
猜你喜欢
  • 2014-04-08
  • 2014-03-31
  • 2014-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-21
  • 2014-10-10
相关资源
最近更新 更多