MySQL外键约束错误1452

时间:2017-09-06 14:44:21

标签: mysql

我遇到的问题是将记录添加到我最近创建的表并创建了一个关系。我有一个名为" sandbox2" 的数据库和一个名为" country" 的表格和另一个名为"的表格城市" 即可。

"国家" table有列:

"id" (primary key)
"countryname"
"城市" table有列:

"cityid"
"cityname"
"cid" -->Foreign key

当我尝试将记录添加到city表时,使用PHPmyadmin插入工具我收到此错误消息:

  

#1452 - 无法添加或更新子行:外键约束失败(sandbox2city,CONSTRAINT city_ibfk_1 FOREIGN KEY(cid)   参考countryid)ON UPDATE CASCADE)

SQL查询:

INSERT INTO `city` (`cityid`, `city`, `cid`) VALUES (NULL, 'johnson', '122')

我已经查看了本网站上报告的类似问题,他们提到检查数据类型并确保它们是相同的;它们都是INT 11个字符。有一件事我注意到我不知道是否相关是默认存储引擎设置为My_ISAM,但我的表是使用引擎InnoDB设置的(见图)。我还没能将默认引擎更改为InnoDB。

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

在下面的查询中:

INSERT INTO `city` (`cityid`, `city`, `cid`) VALUES (NULL, 'johnson', '122')

cityid是外键,因此它不能为空。您必须为此列提供值,该值应存在于国家/地区表的id列中。

示例:

国家/地区表格数据为:

id  | countryname
------------------
1   | US
2   | Uk

然后,您只能使用1或2作为cityid列的值,除了其他值,它会给出相同的错误。

但是根据您添加的最后一张图片,cid是外键,您尝试在该列中插入值122。请确保您在国家/地区表中拥有相同的ID。

答案 1 :(得分:0)

在你的描述中你说cityid是你的外键。它应该是cid。另外,我假设您的国家/地区ID为主键122?你能证实吗?