我遇到的问题是将记录添加到我最近创建的表并创建了一个关系。我有一个名为" sandbox2" 的数据库和一个名为" country" 的表格和另一个名为"的表格城市" 即可。
"国家" table有列:
"id" (primary key)
"countryname"
"城市" table有列:
"cityid"
"cityname"
"cid" -->Foreign key
当我尝试将记录添加到city表时,使用PHPmyadmin插入工具我收到此错误消息:
#1452 - 无法添加或更新子行:外键约束失败(
sandbox2
。city
,CONSTRAINTcity_ibfk_1
FOREIGN KEY(cid
) 参考country
(id
)ON UPDATE CASCADE)
SQL查询:
INSERT INTO `city` (`cityid`, `city`, `cid`) VALUES (NULL, 'johnson', '122')
我已经查看了本网站上报告的类似问题,他们提到检查数据类型并确保它们是相同的;它们都是INT 11个字符。有一件事我注意到我不知道是否相关是默认存储引擎设置为My_ISAM,但我的表是使用引擎InnoDB设置的(见图)。我还没能将默认引擎更改为InnoDB。
答案 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?你能证实吗?