我在之前的帖子搜查,但並沒有完全找到答案,所以這裏去複製的鑰匙......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的約束條件刪除,表格創建就好了。我無法弄清楚重複鍵在哪裏。所有的幫助非常感謝。 謝謝。
請修復格式。 – Kermit
格式化固定。奇怪的是,使用代碼或塊引用不會解決它,不得不手動添加空間:( – user2754571
我可能是錯的,但您的索引名稱是重複的數據庫內,他們需要是唯一的 – Kermit