次の MySQL テーブルにいくつかのデータを挿入しています。
CREATE TABLE genotype
(
Genotype VARCHAR(20),
Fitness FLOAT NULL,
Tally INT NULL,
PRIMARY KEY (Genotype)
)ENGINE=InnoDB;
CREATE TABLE gene
(
Gene VARCHAR(20),
E FLOAT NOT NULL,
Q2 FLOAT NOT NULL,
PRIMARY KEY (Gene)
)ENGINE=InnoDB;
CREATE TABLE genotypegene
(
Genotype VARCHAR(20),
Gene VARCHAR(20),
FOREIGN KEY (Genotype) REFERENCES genotype(Genotype),
FOREIGN KEY (Gene) REFERENCES gene(Gene)
)ENGINE=InnoDB;
最初に遺伝子型/遺伝子にデータを挿入しましたが、遺伝子型遺伝子に挿入しようとすると次のエラーが発生します。
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`populationdb`.`genotypegene`, CONSTRAINT `genotypegene_ibfk_2` FOREIGN KEY (`Gene`) REFERENCES `gene` (`Gene`))
このテーブルに挿入するデータは次のとおりです: Genotype1,Gene1 Genotype1,Gene2 Genotype1,Gene3 Genotype1,Gene4
遺伝子型テーブルには Genotype1 のコピーが 1 つあり、各遺伝子型には多くの遺伝子を含めることができますが、各遺伝子は複数の遺伝子型に存在する可能性があります (現時点では遺伝子型は 1 つしかありませんが、後で追加します)。ここで、外部キー チェックをオフにできることを読みましたが、このエラーの理由を知らずにそうするのは気が進まないのです。これは、遺伝子型テーブルに Genotype1 のコピーが 1 つしかないためですか? (Genotype1、Gene1 などが主キー テーブルで同じ形式/スペルであることを確認しました)。
念のため、データを挿入するために使用しているコードを次に示します。
mysql> LOAD DATA LOCAL INFILE 'C:\\.....genotypegene.csv'
-> INTO TABLE genotypegene
-> FIELDS TERMINATED BY ','
-> (Genotype, Gene);
ありがとう