SQLyog创建外键错误

时间:2017-04-19 13:16:30

标签: mysql foreign-keys

执行此查询时,我遇到了关于SQLyog外键关系创建的问题:

错误:

  

无法添加或更新子行:外键约束失败   (zestagio#sql-6dc_4b6151,CONSTRAINT FK_CARRO FOREIGN KEY   (CARRO)参考km_carroIDCARRO))

MySQL查询:

ALTER TABLE `zestagio`.`km_colaboradores`   
  ADD COLUMN `CARRO` int(11) NOT NULL after `TIPO`,
  ADD CONSTRAINT `FK_CARRO` FOREIGN KEY (`CARRO`) REFERENCES `zestagio`.`km_carro`(`IDCARRO`)

1 个答案:

答案 0 :(得分:1)

错误消息只表示您在km_colaboradores表中的记录不满足FK_CARRO外键设置的约束。

看到字段CARRO被定义为intnot null,并且也没有指定默认值。事实上,这个语句没有引发任何错误,但是外键确实表明没有启用严格的sql模式。您可能已经在表中包含数据,因此以这种方式添加CARRO字段会导致所有记录都设置为0。在严格的sql模式下,这会导致错误消息,因此无法启用严格的sql模式。

但是,当您尝试添加外键时,MySQL在km_carro表中找不到任何记录,其中IDCARRO为0,因此现有记录会破坏外键约束。

我建议允许CARRO暂时具有空值,添加外键,根据需要更新CARRO值到正确的值,然后才禁用空值。

另一种方法是为CARRO定义明确的默认值,IDCARRO字段中存在该值。