3
好吧,所以我在MySQL中創建索引和外鍵的表。我使用MySQL Workbench來創建表格,然後讓它正向工程設計一個SQL創建腳本(在可視化DB環境中,我的工作比剛剛用手寫出SQL代碼更好)。MySQL創建表索引錯誤
的問題是很多時候我導入SQL腳本到MySQL,我得到了經典eror:
#1005 - Can't create table 'db.tablename' (errno: 121)
我管理的每個時間,通常指數/外鍵關聯弄清楚這個問題,但現在我開始惱火,不得不每次修復它。我不太明白問題所在(特別是當一個MySQL產品爲自己的數據庫創建sql代碼時)。下面是一些通常會導致問題的代碼。
CREATE TABLE IF NOT EXISTS `db`.`groupMembers` (
`groupMembersID` INT NOT NULL AUTO_INCREMENT ,
`groupID` INT NOT NULL ,
`userID` INT NULL ,
PRIMARY KEY (`groupMembersID`) ,
INDEX `group` (`groupID` ASC) ,
INDEX `user` (`userID` ASC) ,
CONSTRAINT `group`
FOREIGN KEY (`groupID`)
REFERENCES `db`.`groups` (`groupsID`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `user`
FOREIGN KEY (`userID`)
REFERENCES `db`.`users` (`usersID`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
錯誤通常來自於第一索引定義 - 甚至當我拿出索引定義,我只是在第一個外鍵約束定義得到的錯誤。我檢查過了,外鍵遠程列和本地列是相同的數據類型和大小。
謝謝 - 我改變了我的所有外鍵,索引名稱,並修復了錯誤。這是否也適用於索引名稱,還是僅限於表格特定? – 2009-08-24 15:17:42
是的,每個實體(索引,表等)在整個數據庫中都應該是唯一的)。 – Fabian 2009-08-24 16:16:17