2017-04-11 69 views
0

我有两个表:tblACTypeCharacteristics和tblAircrafts。MySQL无法添加或更新子行

tblACTypeCharacteristics定义:

create table if not exists tblACTypeCharacteristics(
idAC_type  varchar(255) not null, 
numPassengers int, 
primary key(idAC_type)); 

tblAircrafts定义:

create table if not exists tblAircrafts(
idAC  int not null auto_increment, 
txtAC_tag varchar(255) not null, 
txtAC_type varchar(255) not null, 
primary key(idAC, txtAC_tag)); 

此外,我增加了一个外键类似如下:

alter table tblaircrafts add foreign key(txtAC_type) 
     references tblactypecharacteristics(idAC_type); 

在tblACTypeCharacteristics,最大数量为每种类型的飞机定义乘客。在tblAircraft中都列出了可用的飞机。 我可以通过键入例如插入一个新的飞机:

insert into tblaircrafts (txtAC_tag, txtAC_type) values ('OE-LDA','A319-112'); 

但由于周围有飞机的负载,我不想手工每一个补充。 我想通过csv文件导入它们(我确实有几架飞机的列表)。 我导入它如下:

load data local infile 'C:\\Users\\t_lichtenberger\\Desktop\\tblAircrafts.csv' 
into table tblaircrafts 
character set utf8 
fields terminated by ';' 
lines terminated by '\n' 
ignore 1 lines; 

但正如我想的.csv文件导入到tblaircraft表,我得到以下错误:

15:08:37 alter table tblaircrafts add foreign key(txtAC_type) references tblactypecharacteristics(idAC_type) Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`pilotproject`.`#sql-11d0_2da`, CONSTRAINT `#sql-11d0_2da_ibfk_1` FOREIGN KEY (`txtAC_type`) REFERENCES `tblactypecharacteristics` (`idAC_type`)) 0.641 sec 

,我无法解释为什么。列数是相同的,列的数据类型是相同的。我有双重检查的CSV针对的arent的tblACTypeCharacteristic表中,它应该是不错的AC_types ..

CSV文件的样子,随后的前几行:

first few lines of the aircraft csv

任何建议为什么错误仍然存​​在? 非常感谢你提前!

+1

解决问题的一种有用方法是删除或取消激活外键,然后导入行。假设它成功导入,然后可以执行查询来查找哪些子行具有不在父表中的键。 – Bampfer

回答

0

我终于找到了解决办法。我只是通过执行禁用外键检查

SET foreign_key_checks = 0; 

在设置外键和它的工作之前!之后我能够添加csv记录。

+0

您是否可以将外键检查重新打开? – Bampfer

+0

是的,当我添加记录时,我将外键检查重新设置为1 – user7335295

相关问题