我用 Perl 编写了一个脚本来创建数据库模式:
CREATE TABLE descType (
id MEDIUMINT unsigned PRIMARY KEY,
descr MEDIUMTEXT)ENGINE=InnoDB;
CREATE TABLE taxType (
id MEDIUMINT unsigned PRIMARY KEY,
descr TEXT not null)ENGINE=InnoDB;
CREATE TABLE uniref(
id INT unsigned PRIMARY KEY,
seqId varchar (50) not null,
descId MEDIUMINT unsigned not null,
n MEDIUMINT unsigned not null,
taxId MEDIUMINT unsigned not null,
repId varchar (50) not null,
foreign KEY (descId) REFERENCES descType(id),
FOREIGN KEY (taxId) REFERENCES taxType(id),
unique(seqId)
)ENGINE=InnoDB;
当我使用此命令时:
system qq(mysqlimport -u$mySqlUser -p$mySqlPass $database $table --local --fields-terminated-by="\t" --lines-terminated-by="\r\n") )== 0
or die "ERROR: an error occurred while importing $table in $database. $?";
我收到此错误:
mysqlimport: Error: 1452, Cannot add or update a child row: a foreign key
constraint fails (`uniref_2013_08`.`uniref`, CONSTRAINT `uniref_ibfk_1`
FOREIGN KEY (`descId`) REFERENCES `descType` (`id`)), when using
table: uniref
我不知道我做错了什么。我在另一台机器上使用相同的脚本并且运行良好。
最佳答案
外键可以保持数据完整性,并在没有父行的情况下防止插入。您需要先填充 descType
父表。
关于mysqlimport:错误:1452,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18785403/