添加外键错误 [英] Adding Foreign Key Error

查看:351
本文介绍了添加外键错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要从Table Customers row =Customer ID添加外键, row =Customer ID

   - 表结构`customer` 

如果不存在`Customers`(
`CustomerID` varchar(50)NOT NULL,
`Fname` varchar(50)DEFAULT NULL,
`LName` varchar(20)DEFAULT NULL,
`Tel` varchar(20)DEFAULT NULL,
`Fax` varchar(20)DEFAULT NULL,
`CustType` varchar )DEFAULT NULL,
`AdState` varchar(50)DEFAULT NULL,
`City` varchar(20)DEFAULT NULL,
`Zip` varchar(20)DEFAULT NULL,
`Street` varchar(20)DEFAULT NULL,
PRIMARY KEY(`CustomerID`)
)ENGINE = InnoDB DEFAULT CHARSET = latin1;

- 转储表`Customers`的数据

INSERT INTO`Customers`(`CustomerID`,`Fname`,`LName`,`Tel`,`Fax` ,'CustType`,`AdState`,`City`,`Zip`,`Street`)VALUES
('AC001','All','Creatures','206 555-6622','206 555- 7854','2','WA','Tall Pines','98746','21 Grace St.'),
('AD001','Johnathan','Adams','206 555 7623' ,'206 555 8855','1','WA','Mountain View','984101012','66 10th St'),
('AD002','William','Adams' 555 7623','503 555 7319','1','OR','Lakewille','9740110011','1122 10th_St'),
('AK001','Animal',' 208 555 7108','','2','ID','Borderville','834835646','15 Marlin Lane');

CREATE TABLE如果不存在`Pet`(
`ID` varchar(50)NOT NULL,
`CustomerID`varchar(50)NOT NULL,
`性别`varchar(20)DEFAULT NULL,
`Race` varchar(20)DEFAULT NULL,
`Name` varchar(20)DEFAULT NULL,
`Kind` varchar ,
`Birthday` varchar(20)DEFAULT NULL,
PRIMARY KEY(`ID`)
)ENGINE = InnoDB DEFAULT CHARSET = latin1;

- 转储表'Pet'的数据

INSERT INTO`Pet`(`ID`,`CustomerID`,`Gender`,`Race`,`Name` ,`Kind`,`Birthday`)VALUES
('AC001-01','0','M','Long Ear','Bobo','Rabbit','4/8/92') ,
('AC001-02','0','F','Chameleon','Presto Chango','Lizard','5/1/92'),
03','0','M','','Stinky','Skunk','8/1/91'),
('AC001-04','0','M' '德国牧羊犬','Fido','狗','6/1/90'),
('AD001-01','0','F','Potbelly',' Pig','2/15/91'),
('AD001-02','0','M','Palomino','Rising Sun','Horse','4/10/90 '),
('AD002-01','0','F','Mixed','Dee Dee','Dog','2/15/91'),
AK001-03','0','M','','Jerry','Rat','2/1/88'),
('AK001-07','0' ','Beagle','Luigi','Dog','8/1/92');

这是我一直用来添加外键的代码:

  ALTER TABLE宠物添加约束Pet_FK 
FOREIGN KEY(CustomerID)REFERENCES客户

此错误消息是:

 #1452  - 无法添加或更新子行:外键约束失败
(`hospital`.`#sql-523_76e`,CONSTRAINT`Pet_FK`FOREIGN KEY `CustomerID`)
REFERENCES`Customers`(`CustomerID`))

一个初学者数据库,我不知道我应该尝试下一步。



我认为这一切。如果我错过了任何必要的信息,请告诉我,我会添加它。



UPDATE ***

  ALTER TABLE客户ADD CONSTRAINT Customers_FK 
FOREIGN KEY(CustomerID)参考Pet(CustomerID);

我交换了一些职位,我收到的错误代码是:

 #1215  - 无法添加外键约束

$ b



有一行包含CustomerID,但不能是匹配。因此,首先,您需要删除/编辑/处理条目,而不是添加外键。


I want to add a foreign key from Table Customers, row= "Customer ID" to Table Pet, row= "Customer ID".

-- Table structure for table `Customers`

CREATE TABLE IF NOT EXISTS `Customers` (
  `CustomerID` varchar(50) NOT NULL,
  `Fname` varchar(50) DEFAULT NULL,
  `LName` varchar(20) DEFAULT NULL,
  `Tel` varchar(20) DEFAULT NULL,
  `Fax` varchar(20) DEFAULT NULL,
  `CustType` varchar(20) DEFAULT NULL,
  `AdState` varchar(50) DEFAULT NULL,
  `City` varchar(20) DEFAULT NULL,
  `Zip` varchar(20) DEFAULT NULL,
  `Street` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`CustomerID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- Dumping data for table `Customers`

INSERT INTO `Customers` (`CustomerID`, `Fname`, `LName`, `Tel`, `Fax`, `CustType`, `AdState`, `City`, `Zip`, `Street`) VALUES
('AC001', 'All', 'Creatures', '206 555-6622', '206 555-7854', '2', 'WA', 'Tall Pines', '98746', '21 Grace St.'),
('AD001', 'Johnathan', 'Adams', '206 555 7623', '206 555 8855', '1', 'WA', 'Mountain View', '984101012', '66 10th St'),
('AD002', 'William', 'Adams', '503 555 7623', '503 555 7319', '1', 'OR', 'Lakewille', '9740110011', '1122 10th_St'),
('AK001', 'Animal', 'Kingdom', '208 555 7108', '', '2', 'ID', 'Borderville', '834835646', '15 Marlin Lane');

CREATE TABLE IF NOT EXISTS `Pet` (
  `ID` varchar(50) NOT NULL,
  `CustomerID` varchar(50) NOT NULL,
  `Gender` varchar(20) DEFAULT NULL,
  `Race` varchar(20) DEFAULT NULL,
  `Name` varchar(20) DEFAULT NULL,
  `Kind` varchar(20) DEFAULT NULL,
  `Birthday` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- Dumping data for table `Pet`

INSERT INTO `Pet` (`ID`, `CustomerID`, `Gender`, `Race`, `Name`, `Kind`, `Birthday`) VALUES
('AC001-01', '0', 'M', 'Long Ear', 'Bobo', 'Rabbit', '4/8/92'),
('AC001-02', '0', 'F', 'Chameleon', 'Presto Chango', 'Lizard', '5/1/92'),
('AC001-03', '0', 'M', '', 'Stinky', 'Skunk', '8/1/91'),
('AC001-04', '0', 'M', 'German Shepherd', 'Fido', 'Dog', '6/1/90'),
('AD001-01', '0', 'F', 'Potbelly', 'Patty', 'Pig', '2/15/91'),
('AD001-02', '0', 'M', 'Palomino', 'Rising Sun', 'Horse', '4/10/90'),
('AD002-01', '0', 'F', 'Mixed', 'Dee Dee', 'Dog', '2/15/91'),
('AK001-03', '0', 'M', '', 'Jerry', 'Rat', '2/1/88'),
('AK001-07', '0', 'M', 'Beagle', 'Luigi', 'Dog', '8/1/92');

This is the code that I have been using to add the foreign key:

ALTER TABLE Pet ADD CONSTRAINT Pet_FK 
FOREIGN KEY (CustomerID) REFERENCES Customers (CustomerID);

And the error message from this is:

#1452 - Cannot add or update a child row: a foreign key constraint fails     
(`hospital`.`#sql-523_76e`, CONSTRAINT `Pet_FK` FOREIGN KEY (`CustomerID`) 
REFERENCES `Customers` (`CustomerID`))

I am quite a beginner with database and I have no idea what I should try next.

I think that's all. Im still new to this stackoverflow so if I missed any necessary information please tell me and I will add it.

UPDATE***

ALTER TABLE Customers ADD CONSTRAINT Customers_FK 
FOREIGN KEY (CustomerID) REFERENCES Pet (CustomerID);

I swapped some positions and the error code I recieve is:

#1215 - Cannot add foreign key constraint

解决方案

Simple one.

There is an row that contains the CustomerID that can't be matched. So first you need to remove/edit/handle the entry and than add a foreign key.

这篇关于添加外键错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆