执行此查询时,我遇到了关于SQLyog外键关系创建的问题:
错误:
无法添加或更新子行:外键约束失败 (
zestagio
。#sql-6dc_4b6151
,CONSTRAINTFK_CARRO
FOREIGN KEY (CARRO
)参考km_carro
(IDCARRO
))
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`)
答案 0 :(得分:1)
错误消息只表示您在km_colaboradores
表中的记录不满足FK_CARRO
外键设置的约束。
看到字段CARRO
被定义为int
和not null
,并且也没有指定默认值。事实上,这个语句没有引发任何错误,但是外键确实表明没有启用严格的sql模式。您可能已经在表中包含数据,因此以这种方式添加CARRO
字段会导致所有记录都设置为0。在严格的sql模式下,这会导致错误消息,因此无法启用严格的sql模式。
但是,当您尝试添加外键时,MySQL在km_carro
表中找不到任何记录,其中IDCARRO
为0,因此现有记录会破坏外键约束。
我建议允许CARRO
暂时具有空值,添加外键,根据需要更新CARRO
值到正确的值,然后才禁用空值。
另一种方法是为CARRO
定义明确的默认值,IDCARRO
字段中存在该值。