PHPMyAdmin外键错误-无法添加约束

时间:2019-01-09 10:03:59

标签: mysql phpmyadmin foreign-keys

我正在尝试使用PHP为我的家庭预算应用程序设计数据库结构。 在设置外键时,我遇到了一个问题。

我有3张桌子:

日志(id,日期,tranTypeID,categoryID,描述,值,isForecast)
类别(id,categoryName)
transactiontype(id,transactionTypeName)

日志-主要预算记录
category-日志记录的固定类别列表
transactiontype-目前仅保存2条记录:费用,收入

我为tranTypeID设置了外键,没有失败。尝试通过以下方法对categoryID执行相同操作时:

ALTER TABLE `log` ADD  CONSTRAINT `fk_log_category` FOREIGN KEY (`categoryID`) REFERENCES `category`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;

我遇到以下错误:

  

1452-无法添加或更新子行:外键约束失败(budget#sql-1aac_349,CONSTRAINT fk_log_category外键(categoryID)参考{{1 }}(category

我确实将所有表引擎都设置为InnoDB,并且所有相关列都设置了完全相同的数据类型。

1 个答案:

答案 0 :(得分:0)

可能是您的log表中有记录,而categoryIDcateogry表中不存在。创建外键之前,您需要更新或删除这些记录。

您可以使用以下查询找到有问题的记录:

SELECT DISTINCT categoryID 
FROM log l LEFT JOIN category c ON c.id = l.categoryID
WHERE c.id IS NULL;