小编典典

MySQL错误:缺少约束索引

sql

我在数据库中创建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”的缺少索引

这些表已经存在,但是我更改了一个字段。


阅读 447

收藏
2021-03-23

共1个答案

小编典典

外索引中引用的列必须被索引。您需要在添加索引medication.med_id。实际上,这可能应该是表的主键。

ALTER TABLE medication ADD PRIMARY KEY (med_id);
2021-03-23