SQL 可以单独插入但不能加载为带外键的文件
SQL can insert separately but cannot load as file with foreign key
我是数据库的新手,正在学习教程并进行实验。如果这个问题被证明是愚蠢的,我深表歉意。
我设置了一个 table 这样的:
CREATE TABLE if not exists SAMPLE(
chara varchar(15) not null,
Num char(9),
secNum char(9),
primary key (Num),
foreign key (secNum) references sample(Num)
) engine=innodb;
如果我一个一个插入条目:
insert into SAMPLE(chara, Num) values ("A", "111");
insert into SAMPLE(chara, Num, secNum) values ("B", "222", "111");
insert into SAMPLE(chara, Num) values ("C", "333");
它工作正常。但是,如果我使用 load data infile ".../SAMPLE.txt" into table SAMPLE;
:
加载以下数据
A 111 \N
B 222 111
C 333 \N
我收到一条错误消息:
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`company`.`sample`, CONSTRAINT `sample_ibfk_1` FOREIGN KEY (`secNum`) REFERENCES `sample` (`Num`)) 0.000 sec
我猜想这与破坏参照完整性有关,但我不知道是什么。而且我也不知道为什么它适用于 serval 插入但不适用于负载。谁能帮助我了解出了什么问题以及如何摆脱它?谢谢。
单独逐行插入时,第二次插入已经看到111行,不违反FK
但是当您加载文件时,它会尝试在一批(事务)中插入所有行,因此第 111 行还不存在。
我是数据库的新手,正在学习教程并进行实验。如果这个问题被证明是愚蠢的,我深表歉意。
我设置了一个 table 这样的:
CREATE TABLE if not exists SAMPLE(
chara varchar(15) not null,
Num char(9),
secNum char(9),
primary key (Num),
foreign key (secNum) references sample(Num)
) engine=innodb;
如果我一个一个插入条目:
insert into SAMPLE(chara, Num) values ("A", "111");
insert into SAMPLE(chara, Num, secNum) values ("B", "222", "111");
insert into SAMPLE(chara, Num) values ("C", "333");
它工作正常。但是,如果我使用 load data infile ".../SAMPLE.txt" into table SAMPLE;
:
A 111 \N
B 222 111
C 333 \N
我收到一条错误消息:
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`company`.`sample`, CONSTRAINT `sample_ibfk_1` FOREIGN KEY (`secNum`) REFERENCES `sample` (`Num`)) 0.000 sec
我猜想这与破坏参照完整性有关,但我不知道是什么。而且我也不知道为什么它适用于 serval 插入但不适用于负载。谁能帮助我了解出了什么问题以及如何摆脱它?谢谢。
单独逐行插入时,第二次插入已经看到111行,不违反FK 但是当您加载文件时,它会尝试在一批(事务)中插入所有行,因此第 111 行还不存在。