#1452 MySQL错误:外键约束失败

时间:2013-10-26 19:34:10

标签: mysql sql

这是两个db-table:

1)kind_basis

id              bigint(20) unsigned     NO  PRI     NULL    auto_increment
vorname         varchar(64)             NO          NULL    
nachname        varchar(64)             NO          NULL    
geburtsland_id  bigint(20) unsigned     YES MUL     NULL    

2)liste_land

id              bigint(20) unsigned     NO  PRI     NULL    auto_increment
iso             varchar(2)              NO          NULL    
landname        varchar(255)            NO          NULL    

db-table liste_land包含国家/地区列表(摘录):

1   AD  Andorra
2   AE  Vereinigte Arabische Emirate
3   AF  Afghanistan
4   AG  Antigua und Barbuda
5   AI  Anguilla
6   AL  Albanien
7   AM  Armenien
8   AO  Angola  
    ....    

这是sql查询:

 ALTER TABLE `kind_basis` 
    ADD CONSTRAINT `fk_geburtsland_id` 
        FOREIGN KEY ( `geburtsland_id` ) 
        REFERENCES `liste_land` (`id`)  

这是mysql错误消息:

#1452 - Cannot add or update a child row: a foreign key constraint fails
(`testing_v2.0.0`.<result 2 when explaining filename '#sql-6687_13b16'>, 
CONSTRAINT `fk_geburtsland_id` FOREIGN KEY (`geburtsland_id`) REFERENCES 
`liste_land` (`id`))

我做错了什么,但是什么?

2 个答案:

答案 0 :(得分:4)

在kind_basis表中,你有一行或多行的geburtsland_id在表liste_land的字段id中没有匹配。

答案 1 :(得分:2)

当您尝试在现有表格上添加约束时,即kind_basis,该表格中的某些行违反了您要添加的约束。你需要做的是首先从kind_basis geburtsland_id列中删除那些在liste_land id列中不存在的值。那你就会成功。截断表不是唯一可用的选项,还有一些选项。