1452 - 无法添加或更新子行:外键约束失败(projectphp1707
.#sql-e6c_cd
, 约束#sql-e6c_cd_ibfk_1
外键(order_id
) 参考tbl_order
(order_id
))
table 1:
table 2:
CREATE TABLE `tbl_order` (
`order_id` int(11) NOT NULL,
`user_id` int(11) DEFAULT NULL,
`cus_fullname` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`total_price` double DEFAULT NULL,
`active` tinyint(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `tbl_payment` (
`pay_id` int(50) NOT NULL,
`pro_id` int(15) NOT NULL,
`pay_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`pay_email` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`pay_adress` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`pay_cardname` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`pay_cvc` int(3) NOT NULL,
`pay_number` text COLLATE utf32_unicode_ci NOT NULL,
`pay_mm` int(2) NOT NULL,
`pay_yyyy` int(4) NOT NULL,
`pay_totals` varchar(255) COLLATE utf32_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf32 COLLATE=utf32_unicode_ci;
这通过以下两种方式之一发生:
1-您尝试向子表添加一条记录,并且使用了父表主键中不存在的外键值。
在这种情况下,请仔细检查该值是否存在于父表中。也许您正在输入父记录和子记录,但父记录添加失败。在这种情况下,您必须停止,而不是忽略错误并继续添加子项。
2-你的表没有像这样的引用完整性ON DELETE CASCADE
并且您从父表中删除了一条记录,然后您尝试更新子表中的一条记录,该记录的外键引用了父表中的删除记录。
在这种情况下,您可能想要删除子项而不是更新它们。考虑向表中添加引用完整性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)