【问题标题】:Weird mysql behavior when adding foreign key添加外键时奇怪的mysql行为
【发布时间】:2021-02-15 00:18:54
【问题描述】:

我正在尝试像这样添加一个简单的外键

ALTER TABLE `4over4local`.`wf_job_status`
ADD CONSTRAINT `fk_sales_job_status_sales_job1`
  FOREIGN KEY (`job_id`)
  REFERENCES `4over4local`.`sales_job` (`job_id`)
  ON DELETE CASCADE
  ON UPDATE CASCADE;

但是我遇到了一个非常奇怪的错误,其中一些名为 #sql-d74_9 的数据库表甚至不存在。

ERROR 1452: Cannot add or update a child row: a foreign key constraint fails (`4over4local`.`#sql-d74_9`, 
CONSTRAINT `fk_sales_job_status_sales_job1` FOREIGN KEY (`job_id`) REFERENCES `sales_job` (`job_id`) 
ON DELETE CASCADE ON UPDATE CASCADE)

我之前做过非常相似的查询,除了这个之外,它们都运行良好。什么可能导致这种情况以及我做错了什么?我正在使用 MariaDB 13

【问题讨论】:

    标签: sql foreign-keys mariadb alter-table


    【解决方案1】:

    该错误表明您在表中存在不满足您尝试添加的外键约束的行。您需要先修复数据,然后才能创建约束。

    您可以使用以下查询显示违规行:

    select wjs.*
    from wf_job_status wjs
    where not exists (select 1 from sales_job sj where sj.job_id = wjs.job_id)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-20
      • 2012-10-23
      相关资源
      最近更新 更多