我對創建的SQL數據庫有問題。我試圖切換到使用INNODB,但我似乎無法獲得級聯的語法(或可能邏輯)正確。INNODB級聯語法/邏輯問題
這是part of the code erroring。它不象線在平時神祕的40
錯誤輸出(至少對我來說)形式:
ERROR 1005 (HY000) at line 36: Can't create table './school/staff.frm' (errno: 150)
編輯:
這裏的whole SQL file我想管的如果幫助。
我對創建的SQL數據庫有問題。我試圖切換到使用INNODB,但我似乎無法獲得級聯的語法(或可能邏輯)正確。INNODB級聯語法/邏輯問題
這是part of the code erroring。它不象線在平時神祕的40
錯誤輸出(至少對我來說)形式:
ERROR 1005 (HY000) at line 36: Can't create table './school/staff.frm' (errno: 150)
編輯:
這裏的whole SQL file我想管的如果幫助。
外鍵必須是索引。 (role.name)
試試這個:
CREATE TABLE IF NOT EXISTS `role` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(30) NOT NULL,
`description` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `name` (`name`)
) ENGINE=InnoDB;
您是不是要找的「角色」列的外鍵約束使用的名稱,而不是ID是?它看起來像以下行(43行):
FOREIGN KEY (role) REFERENCES role(name)
應該是:
FOREIGN KEY (role) REFERENCES role(id)
這無誤的執行。
或者,可以將「staff.role」列的數據類型(第40行,角色INT NOT NULL)更改爲CHAR(30)NOT NULL。
我實際上已經嘗試向它添加一個INDEX名稱行,但這行不起作用。並且它似乎也不是你的建議:(。 仍然輸出:錯誤1005(HY000)在行37:無法創建表'./school/staff.frm'(errno:150) – 2009-02-17 22:26:01