0
嗨我在mysql工作台中设计了一个数据库。当我去正向工程师时,我得到了(errno:121),因为我在多个表中使用了相同的外键,而我认识到这些外键是不允许的。我有很多联结表,主要是n:m关系。我为大多数这些联结表使用复合主键(由2个外键组成)。我的问题是,我是否必须将这些主键与外键一起重命名为唯一? 请欣赏一些帮助。mySql外键名称问题
(我还没有在下面的代码改名为外键还)我
CREATE TABLE IF NOT EXISTS `mydb`.`tblStudent` ( `StudentID` INT(6) NOT NULL AUTO_INCREMENT , `Student_Firstname` VARCHAR(20) NOT NULL , `Student_Lastname` VARCHAR(20) NOT NULL , `DOB` DATE NOT NULL , `Student_Gender` ENUM('Male','Female') NOT NULL , `Student_Address1` VARCHAR(40) NOT NULL , `Student_Address2` VARCHAR(22) NOT NULL , `Student_Address3` VARCHAR(14) NOT NULL , `Student_Phonenum` INT(10) NULL , `Student_Email` VARCHAR(60) NOT NULL , `Student_Password` CHAR(128) NOT NULL , `Enrollment_Date` DATE NOT NULL , `Graduation_Date` DATE NULL , `Student_Picture` VARCHAR(100) NOT NULL , `PPSN` VARCHAR(9) NOT NULL , PRIMARY KEY (`StudentID`)) ENGINE = InnoDB CREATE TABLE IF NOT EXISTS `mydb`.`tblIllness` ( `IllnessID` CHAR(5) NOT NULL , `Illness_Name` VARCHAR(30) NOT NULL , PRIMARY KEY (`IllnessID`)) ENGINE = InnoDB CREATE TABLE IF NOT EXISTS `mydb`.`tblStudentIllness` ( `IllnessID` CHAR(5) NOT NULL , `StudentID` INT(6) NOT NULL , `Doctor_Name` VARCHAR(30) NOT NULL , `Doctor_Phonenum` INT(10) NOT NULL , `Medication` VARCHAR(40) NOT NULL , `Medical_Advice` VARCHAR(250) NOT NULL , PRIMARY KEY (`IllnessID`, `StudentID`) , INDEX `IllnessID_idx` (`IllnessID` ASC) , INDEX `StudentID_idx` (`StudentID` ASC) , CONSTRAINT `IllnessID` FOREIGN KEY (`IllnessID`) REFERENCES `mydb`.`tblIllness` (`IllnessID`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `StudentID` FOREIGN KEY (`StudentID`) REFERENCES `mydb`.`tblStudent` (`StudentID`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB
感谢您的快速回复.Ya它为我编译了3个表格,我有26个表格。当我编译26个表格时,我仍然得到errno:121.当我忽略3个表格时,它编译得很好。我是一个完全的新手,当涉及到mySQL和这个网站,所以不知道我是否应该在这里发布完整的代码。同样,当23个表编译好的时候,这是否意味着当你使用2个外键作为复合主键时,它的ok值是否与表中的相同? – Richie
@Richie您可以在代码粘贴网站(pastebin)创建一个帐户,然后将其删除。这将使我们能够看到它并尝试找到问题。我没有看到命名问题的问题,但我必须看到代码。 – Kermit
这里是代码。希望你能发现错误,因为我不能。似乎在tblClassTimetable,tblContinuousAssessment和tblContinuousAssessment。 http://pastebin.com/NVZ3NF2d – Richie