2016-04-06 78 views
1

我想在表'routes1'上添加多個外鍵,但它仍然給我一個錯誤Cannot add foreign key constraint,我是否缺少一些代碼? 在此先感謝。 這裏是代碼片段添加多個外鍵給出錯誤

CREATE TABLE `routes1` (
    `Airline` varchar(3) default NULL, 
    `Airline_ID` int(11) default NULL, 
    `Source_Airport` varchar(4) default NULL, 
    `Source_Airport_ID` varchar(5) default NULL, 
    `Destination_Airport` varchar(4) default NULL, 
    `Destination_Airport_ID` varchar(4) default NULL, 
    `CodeShare` char(1), 
    `Stops` int(1), 
    `Equipment` text, 
FOREIGN KEY(Airline_ID) REFERENCES airlines(Airline_ID) 
    ON DELETE CASCADE ON UPDATE CASCADE, 
FOREIGN KEY(Source_Airport_ID) REFERENCES airports(Airport_ID) 
    ON DELETE CASCADE ON UPDATE CASCADE 
); 

下面是引用表「機場」創建表的腳本

CREATE TABLE `airports` (
    `Airport_ID` int(5), 
    `Name` text, 
    `City` text, 
    `Country` text, 
    `IATA/FAA`text default NULL, 
`ICAO` text, 
    `Latitude` double NOT NULL, 
    `Longitude` double NOT NULL, 
    `Altitude` double NOT NULL, 
    `Timezone` double not null, 
`dst` char(1) default NULL, 
`Tz_Database_time_zone` text, 
    PRIMARY KEY (`Airport_ID`) 
); 
+0

的數據類型Airport_ID爲INT(5) – Deepesh

+0

數據類型必須匹配加上一些其他條件。同時在所有涉及「外鍵」引用的表上發佈'創建'腳本。 –

+0

在外鍵引用中發佈創建表腳本 – Deepesh

回答

5

請看看Airline_ID和Source_Airport_ID的數據類型的變化:數據類型應該是相同的作爲外鍵的源表。

CREATE TABLE `routes1` (
`Airline` varchar(3) default NULL, 
`Airline_ID` int(5) default NULL, 
`Source_Airport` varchar(4) default NULL, 
`Source_Airport_ID` int(5) default NULL, 
`Destination_Airport` varchar(4) default NULL, 
`Destination_Airport_ID` varchar(4) default NULL, 
`CodeShare` char(1), 
`Stops` int(1), 
`Equipment` text, 
FOREIGN KEY(Airline_ID) REFERENCES airlines(Airline_ID) 
ON DELETE CASCADE ON UPDATE CASCADE, 
FOREIGN KEY(Source_Airport_ID) REFERENCES airports(Airport_ID) 
ON DELETE CASCADE ON UPDATE CASCADE 
); 

如果答案正確,請標記爲答案。謝謝。

因爲你可以看到下面的鏈接瞭解更多信息:

Supports transactions, row-level locking, and foreign keys

+0

工作,非常感謝@jahangirAlam – Deepesh

+0

歡迎@Deepesh –