0

这是两个数据库表:

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

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

4

2 回答 2

4

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

于 2013-10-26T19:49:32.510 回答
2

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

于 2013-10-26T20:09:20.587 回答