2014-07-16 51 views
0

我在database中創建新表時遇到問題。我已經看到它返回的錯誤代碼是Foreign Key限制。使用外鍵創建表時MySQL錯誤號爲150

我檢查過,以確保新表中的foreign keydata type與其他表中的primary keydata type匹配。他們都是int(11)

但是我仍然收到一個錯誤。我錯過了什麼嗎?這是我創建新表SQL腳本:

CREATE TABLE `regular_features` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `name` VARCHAR(200) DEFAULT NULL, 
    `day` VARCHAR(200) DEFAULT NULL, 
    `description` TEXT DEFAULT NULL, 
    `programme_id` INT(11) NOT NULL, 
    PRIMARY KEY (`id`), 
    FOREIGN KEY (`programme_id`) REFERENCES directoryprogramme(id) 
) ENGINE=INNODB DEFAULT CHARSET=utf8; 

這是包含primary key原始表:

CREATE TABLE `directoryprogramme` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `name` VARCHAR(250) NOT NULL, 
    `broadcast_time` VARCHAR(100) NOT NULL, 
    `description` TEXT NOT NULL, 
    `days` VARCHAR(150) NOT NULL, 
    `contributors` VARCHAR(250) NOT NULL, 
    `directorycompany_id` INT(11) NOT NULL, 
    `directorycontact_id` VARCHAR(250) NOT NULL, 
    `facebook_link` VARCHAR(250) DEFAULT NULL, 
    `twitter_link` VARCHAR(250) DEFAULT NULL, 
    `wikipedia_link` VARCHAR(250) DEFAULT NULL, 
    `web` VARCHAR(250) DEFAULT NULL, 
    `imageextension` VARCHAR(10) DEFAULT NULL, 
    `type` VARCHAR(20) NOT NULL DEFAULT 'other', 
    PRIMARY KEY (`id`) 
) ENGINE=MYISAM AUTO_INCREMENT=1161 DEFAULT CHARSET=utf8; 

Foreign Key將是directoryprogramme

回答

1

的問題id是您創建聲明的最後一行:

ENGINE=INNODB DEFAULT CHARSET=utf8; 

您在新表格中混合使用MYISAMINNODB

這是行不通的。

將您的新表中的發動機調至MYISAM並且工作正常。

+0

謝謝你完美的幫助 – Javacadabra