2009-02-17 88 views
-1

我對創建的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我想管的如果幫助。

回答

0

外鍵必須是索引。 (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; 
+0

我實際上已經嘗試向它添加一個INDEX名稱行,但這行不起作用。並且它似乎也不是你的建議:(。 仍然輸出:錯誤1005(HY000)在行37:無法創建表'./school/staff.frm'(errno:150) – 2009-02-17 22:26:01

0

您是不是要找的「角色」列的外鍵約束使用的名稱,而不是ID是?它看起來像以下行(43行):

FOREIGN KEY (role) REFERENCES role(name) 

應該是:

FOREIGN KEY (role) REFERENCES role(id) 

這無誤的執行。

或者,可以將「staff.role」列的數據類型(第40行,角色INT NOT NULL)更改爲CHAR(30)NOT NULL。