2013-09-24 96 views
1

我在之前的帖子搜查,但並沒有完全找到答案,所以這裏去複製的鑰匙......MySQL錯誤代碼1022表

我有這個表

CREATE TABLE `leags` 
(
    `lid` int(10) NOT NULL AUTO_INCREMENT, 
    `lName` varchar(255) NOT NULL, 
    `description` varchar(255) DEFAULT NULL, 
    `links` varchar(255) DEFAULT NULL, 
    `cid` int(10) NOT NULL, 
    PRIMARY KEY (`lid`), 
    KEY `index2` (`lid`,`lName`), 
    KEY `index3` (`lid`,`lName`,`cid`), 
    KEY `cid_idx` (`cid`), 
    CONSTRAINT `cid` FOREIGN KEY (`cid`) REFERENCES `cats` (`cid`) 
) 
ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='Leagues'$$ 

我有另一個具有上述PK作爲外鍵的表。

CREATE TABLE `tams` 
(
    `tId` INT(10) NOT NULL , 
    `tName` VARCHAR(255) NOT NULL , 
    `lid` INT(10) NULL , 
    `url` TEXT NULL , 
    PRIMARY KEY (`tId`) , 
    INDEX `index2` (`tId` ASC, `tName` ASC) , 
    INDEX `index3` (`tId` ASC, `tName` ASC, `lid` ASC) , 
    INDEX `lid_idx` (`lid` ASC) , 
    CONSTRAINT `lid` 
    FOREIGN KEY (`lid`) 
    REFERENCES leags` (`lid`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB 

該表的創建工作正常,但我遇到了創建下表的問題。

CREATE TABLE IF NOT EXISTS spSched 
(
    `spscId` INT(10) NOT NULL AUTO_INCREMENT , 
    `startDate` DATE NOT NULL , 
    `endDate` DATE NULL , 
    `startTime` TIME NOT NULL , 
    `endTime` TIME NULL , 
    `htId` INT(10) NULL , 
    `type` VARCHAR(45) NULL , 
    `atId` INT(10) NULL , 
    `leagId` INT(10) NULL , 
    PRIMARY KEY (`spscId`) , 
    UNIQUE INDEX `spscId_UNIQUE` (`spscId` ASC) , 
    INDEX `htId_idx` (`htId` ASC) , 
    INDEX `atId_idx` (`atId` ASC) , 
    INDEX `lid_idx` (`leagId` ASC) , 
    CONSTRAINT `tId` 
    FOREIGN KEY (`htId`) 
    REFERENCES tams (`tId`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `atId` 
    FOREIGN KEY (`atId`) 
    REFERENCES tams` (`tId`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `lId` 
    FOREIGN KEY (`leagId`) 
    REFERENCES leags (`lid`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB 

如果我將lId作爲FK和上述sql的約束條件刪除,表格創建就好了。我無法弄清楚重複鍵在哪裏。所有的幫助非常感謝。 謝謝。

+0

請修復格式。 – Kermit

+0

格式化固定。奇怪的是,使用代碼或塊引用不會解決它,不得不手動添加空間:( – user2754571

+0

我可能是錯的,但您的索引名稱是重複的數據庫內,他們需要是唯一的 – Kermit

回答

0

lId你已經對錶tams lid中的這個名字有一個約束。

我懷疑你的系統不區分大小寫。

http://richardfearn.wordpress.com/2007/03/12/case-insensitive-constraint-names-in-mysql/

內部,InnoDB的商店外鍵約束的名稱作爲 不區分大小寫,與數據庫名稱前綴。所以儘管 onedatabase.b_ibfk_1被視爲不同於 anotherdatabase.b_ibfk_1,Photos.b_ibfk_1和photos.b_ibfk_1是 視爲相同。

只需爲該鍵選擇另一個名稱即可。

+0

就是這樣!當我將約束更改爲leagId時,表格創建爲fone。非常感謝。 – user2754571