我在数据库中创建2个表:
DROP TABLE IF EXISTS `med_pharmacy`; CREATE TABLE IF NOT EXISTS `med_pharmacy` ( `med_pharmacy_id` int(11) NOT NULL AUTO_INCREMENT, `med_id` int(11) NOT NULL, `med_barcode` varchar(45) DEFAULT NULL, `med_received` date DEFAULT NULL, `med_expiry` date DEFAULT NULL, `med_tablet` int(11) DEFAULT NULL, `med_pill` int(11) DEFAULT NULL, `clinic_id` varchar(45) DEFAULT NULL, PRIMARY KEY (`med_pharmacy_id`), KEY `fk_med_pharmacy_medication1_idx` (`med_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1261 DEFAULT CHARSET=utf8mb4;
和:
DROP TABLE IF EXISTS `medication`; CREATE TABLE `medication` ( `med_id` int(11) NOT NULL, `med_name` varchar(75) NOT NULL, `med_date_added` date DEFAULT NULL, `clinic_id` varchar(45) DEFAULT NULL, `med_type` varchar(15) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
当我在沼泽中运行查询时,出现此错误:
SQL查询:
ALTER TABLE `med_pharmacy` ADD CONSTRAINT `fk_med_pharmacy_medication1` FOREIGN KEY (`med_id`) REFERENCES `medication` (`med_id`) ON DELETE CASCADE ON UPDATE CASCADE MySQL
说:文档 #1822-无法添加外键约束。参照表“药物”中约束“ fk_med_pharmacy_medication1”的缺少索引
说:文档
#1822-无法添加外键约束。参照表“药物”中约束“ fk_med_pharmacy_medication1”的缺少索引
这些表已经存在,但是我更改了一个字段。
外索引中引用的列必须被索引。您需要在添加索引medication.med_id。实际上,这可能应该是表的主键。
medication.med_id
ALTER TABLE medication ADD PRIMARY KEY (med_id);