美好的一天每個表有四個外鍵不能引用主表中的單個主鍵
我試圖解決三個表之間的外鍵關係問題。基本上我有兩個次表,每一個都有兩個外鍵和每個外鍵是參照在第三表中的單個主鍵。
同樣的問題發生在一個更大的數據庫,但由於其複雜性,規模和可能的版權問題。我只好找出問題,並創建一個副本會導致同樣的問題。但是,如果你一定要知道,引用主表People
相同的兩個表只是兩個數十個同種有問題的數據庫的宇宙。
我的希望是有人可以指出問題,也許提供的解決方案不會影響當前的結構,所以我可以自己將它應用到所有其他表,因爲從我看到的數據庫它可能會遭受同樣的問題。數據庫的作者是不是我的,僅看圖表時,增加一個人的困惑。
的SQL腳本創建:
CREATE SCHEMA IF NOT EXISTS `sampleBD` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
USE `sampleBD` ;
-- -----------------------------------------------------
-- Table `sampleBD`.`People`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `sampleBD`.`People` (
`PeopleID` INT NOT NULL AUTO_INCREMENT ,
`Name` VARCHAR(200) NOT NULL ,
`EntryDate` DATETIME NULL ,
`EntryBy` INT NULL ,
PRIMARY KEY (`PeopleID`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `sampleBD`.`PeopleNumberId`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `sampleBD`.`PeopleNumberId` (
`PeopleNumberIdID` INT NOT NULL AUTO_INCREMENT ,
`PeopleID` INT NOT NULL ,
`NumberId` INT(11) NOT NULL ,
`EntryDate` DATETIME NULL ,
`EntryBy` INT NULL ,
PRIMARY KEY (`PeopleNumberIdID`) ,
INDEX `PeopleID` (`PeopleID` ASC) ,
INDEX `EntryBy` (`EntryBy` ASC) ,
CONSTRAINT `PeopleID`
FOREIGN KEY (`PeopleID`)
REFERENCES `sampleBD`.`People` (`PeopleID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `EntryBy`
FOREIGN KEY (`EntryBy`)
REFERENCES `sampleBD`.`People` (`PeopleID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `sampleBD`.`PeopleCbi`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `sampleBD`.`PeopleCbi` (
`PeopleCbiID` INT NOT NULL AUTO_INCREMENT ,
`PeopleID` INT NOT NULL ,
`Cbi` INT NOT NULL ,
`EntryDate` DATETIME NULL ,
`EntryBy` INT NULL ,
PRIMARY KEY (`PeopleCbiID`) ,
INDEX `PessoaID` (`PeopleID` ASC) ,
INDEX `EntryBy` (`EntryBy` ASC) ,
CONSTRAINT `PessoaID`
FOREIGN KEY (`PeopleID`)
REFERENCES `sampleBD`.`People` (`PeopleID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `EntryBy`
FOREIGN KEY (`EntryBy`)
REFERENCES `sampleBD`.`People` (`PeopleID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
腳本能夠創建第一和第二表,但是當它到達第三個表則返回錯誤代碼。
Error Code: 1005. Can't create table 'samplebd.peoplecbi' (errno: 121)
這是一個外鍵問題,但我不確定如何修改它的表格或表格的當前結構。
感謝您的幫助。
可能重複的 –
sarwar026
2012-04-13 17:44:02
@ sarwar026:謝謝。它提供了一個新的MySql命令,這對於將來的參考很有用。 – 2012-04-13 17:51:01