gpt4 book ai didi

MySQL 错误 1452 - 无法插入数据

转载 作者:行者123 更新时间:2023-11-29 01:10:20 26 4
gpt4 key购买 nike

我正在向以下 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;

我先将数据插入到 genotype/gene 中,但在尝试插入到 genotypegene 中时出现以下错误:

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`))

我要插入到此表中的数据是:基因型1,基因1基因型1,基因2基因型1,基因3基因型1、基因4

基因型表中有一份Genotype1,其思想是每个基因型可以包含多个基因,但每个基因可以存在于多个基因型中(目前只有1个基因型,稍后我会插入更多).我读了here我可以关闭外键检查,但我不愿意在不知道此错误原因的情况下这样做。这是因为基因型表中只有一份 Genotype1 吗? (我已经检查过 Genotype1、Gene1 等在它们的主键表中的格式/拼写相同)。

以防万一,这是我用来插入数据的代码:

 mysql> LOAD DATA LOCAL INFILE 'C:\\.....genotypegene.csv'
-> INTO TABLE genotypegene
-> FIELDS TERMINATED BY ','
-> (Genotype, Gene);

谢谢

最佳答案

找出导致此问题的原因的一种方法是执行以下操作:

禁用外键

SET FOREIGN_KEY_CHECKS = 0;

加载数据

使用您的命令执行此操作:

mysql> LOAD DATA LOCAL INFILE 'C:\\.....genotypegene.csv'
-> INTO TABLE genotypegene
-> FIELDS TERMINATED BY ','
-> (Genotype, Gene);

查找孤立数据

select gtg.* from genotypegene gtg
where (gtg.Gene not in (select g.Gene from gene g)
or gtg.Genotype not in (select gt.Genotype from genotype gt));

这应该会为您提供导致违反 FK 约束的那些行的列表。

修复孤立数据

更新它们?删除它们?在 CSV 中修复它们?将父行插入 Gene 表?做任何合适的事情。

启用 FK 检查

SET FOREIGN_KEY_CHECKS = 1;

如果不出意外,这应该可以为您提供有关为什么您会遇到 FK 约束违规错误的线索。

祝你好运!

关于MySQL 错误 1452 - 无法插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8588429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com