0

データベース スキーマを作成するスクリプトを 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

何が間違っているのかわかりません。別のマシンで同じスクリプトを使用していましたが、正常に動作していました。

4

1 に答える 1

0

外部キーはデータの整合性を維持し、親行がない場合は挿入を防ぎます。descType最初に親テーブルにデータを入力する必要があります。

于 2013-09-13T14:41:49.660 に答える