当我使用 PHP 和 Ajax 表单向 mysql 添加数据时出现以下错误:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (
ncd
.patient_med_history
, CONSTRAINTfk_patient_medication_patient1
FOREIGN KEY (patient_id
) REFERENCESpatient
(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 行,之后,我遇到了这个错误,不再添加任何行
最佳答案
当 Integrity Constraint 错误发生时,意味着您有一个表,该表的字段对另一个表具有 FK ,因此您试图在其中添加一个值此字段在另一个表中不存在。
当您改为删除时,如果您不先从父项中删除,则无法从具有 FK 的子项中删除。
关于mysql - 添加到数据库时违反完整性约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44719579/