【发布时间】:2017-11-26 22:11:01
【问题描述】:
当我使用 PHP 和 Ajax 形式向 mysql 添加数据时出现以下错误:
SQLSTATE[23000]:违反完整性约束:1452 无法添加或 更新子行:外键约束失败 (
ncd.patient_med_history, 约束fk_patient_medication_patient1外键 (patient_id) 参考patient(patient_id) ON DELETE CASCADE ON UPDATE CASCADE)
这是两个表:
CREATE TABLE IF NOT EXISTS `ncd`.`patient` (
`patient_id` VARCHAR(45) NOT NULL,
`patient_name_en` VARCHAR(55) CHARACTER SET 'utf8mb4' COLLATE
`patient_status` VARCHAR(15) NULL,
PRIMARY KEY (`patient_id`),
INDEX `fk_patient_clinic1_idx` (`clinic_id` ASC),
CONSTRAINT `fk_patient_clinic1`
FOREIGN KEY (`clinic_id`)
REFERENCES `ncd`.`clinic` (`clinic_id`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
这里是外键所在的另一个表:
CREATE TABLE IF NOT EXISTS `ncd`.`patient_med_history` (
`patient_medication_id` INT NOT NULL AUTO_INCREMENT,
`patient_medication` VARCHAR(55) NULL,
`disease` VARCHAR(80) NULL,
`patient_id` VARCHAR(45) NOT NULL,
`clinic_id` VARCHAR(45) NULL,
PRIMARY KEY (`patient_medication_id`),
INDEX `fk_patient_medication_patient1_idx` (`patient_id` ASC),
CONSTRAINT `fk_patient_medication_patient1`
FOREIGN KEY (`patient_id`)
REFERENCES `ncd`.`patient` (`patient_id`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
附言
添加了 3 行之后,我遇到了这个错误,不再添加任何行
【问题讨论】:
-
向我建议在添加 3 行之后添加了约束。
-
您是否正在尝试删除
patient_med_history上的某些注册表并发生这种情况?尝试从该表中删除ON DELETE CASCADE并重复操作