phpmyadmin外键错误-添加约束失败

9cbw7uwe  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(367)

我试图设计一个数据库结构为我的家庭预算应用程序在php。在设置外键时,我遇到了一个问题。
我有三张table:
日志(id、日期、事务类型id、类别id、描述、值、isforecast)
类别(id,categoryname)
transactiontype(id,transactiontypename)
日志-主预算记录
category—日志记录的固定类别列表
transactiontype—目前只保存两个记录:支出、收入
我为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_,constraint fkŠu logŠcategory外键(categoryid)引用类别(id))

我在innodb中设置了所有的表引擎,所有相关的列都设置了完全相同的数据类型。

uujelgoq

uujelgoq1#

很可能你的电脑里有记录 log 谁的表 categoryID 不存在于 cateogry table。在创建外键之前,需要更新或删除这些记录。
您可以使用以下查询查找有问题的记录:

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

相关问题