无法创建外键约束MySql

时间:2020-08-11 10:51:40

标签: mysql

我有2张这样的桌子:

'CREATE TABLE `preoperativeassessments` (
  `Id` char(36) NOT NULL,
  `SurgeonName` varchar(100) NOT NULL,
  `SurgeonExperience` int(11) DEFAULT NULL,
  `AnesthetistName` varchar(100) DEFAULT NULL,
  `DateOfBirthYear` int(11) DEFAULT NULL,
  `Gender` int(11) DEFAULT NULL,
  `Status` int(11) DEFAULT NULL,
  `SurgeryDate` datetime(6) DEFAULT NULL,
  `HospitalId` varchar(20) NOT NULL,
  `PatientId` varchar(50) NOT NULL,
  `SurgeonId` bigint(20) NOT NULL,
  `TheaterId` varchar(16) DEFAULT NULL,
  `AssessmentDate` datetime(6) DEFAULT NULL,
  `BodyStructureId` int(11) NOT NULL,
  `MethodId` varchar(100) DEFAULT NULL,
  `EthnicityId` int(11) DEFAULT NULL,
  PRIMARY KEY (`Id`),
  KEY `FK_PreOperativeAssessments_Hospitals_HospitalId_idx` (`HospitalId`),
  KEY `FK_PreOperativeAssessments_Patients_PatientId_idx` (`PatientId`),
  KEY `FK_PreOperativeAssessments_Users_SurgeonId_idx` (`SurgeonId`),
  KEY `FK_PreOperativeAssessments_BodyStructures_BodyStructureId_idx` (`BodyStructureId`),
  CONSTRAINT `FK_PreOperativeAssessments_BodyStructures_BodyStructureId` FOREIGN KEY (`BodyStructureId`) REFERENCES `bodystructures` (`Id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `FK_PreOperativeAssessments_Hospitals_HospitalId` FOREIGN KEY (`HospitalId`) REFERENCES `hospitals` (`Id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `FK_PreOperativeAssessments_Patients_PatientId` FOREIGN KEY (`PatientId`) REFERENCES `patients` (`Id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `FK_PreOperativeAssessments_Users_SurgeonId` FOREIGN KEY (`SurgeonId`) REFERENCES `abpusers` (`Id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1'


CREATE TABLE `ethnicities` (
   `Id` int(11) NOT NULL,
   `Description` varchar(100) DEFAULT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1

,我尝试使用此方法添加外键约束:

ALTER TABLE casemix.preoperativeassessments ADD CONSTRAINT FK_PreOperativeAssessments_Ethnicities_EthnicityId  FOREIGN KEY (EthnicityId) REFERENCES casemix.ethnicities (Id) ON UPDATE NO ACTION ON DELETE CASCADE

但是我一直收到此错误:“错误代码:1215。无法添加外键约束”

这里可能是什么问题?

1 个答案:

答案 0 :(得分:1)

'InnoDB允许外键引用任何索引列或一组列。但是,在引用表中,必须有一个索引,其中引用列是相同顺序的第一列。 -https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html或主键