2014-09-12 69 views
0

我試着從書專業PHP6,並在第3章我需要創建表來學習:PHP6第3章 - #1215 - 不能添加外鍵約束

CREATE TABLE `entity` (
    `entityid` SERIAL PRIMARY KEY NOT NULL, 
    `name1` varchar(100) NOT NULL, 
    `name2` varchar(100) NOT NULL, 
    `type` char(1) NOT NULL 
);

CREATE TABLE `entityaddress` (
    `addressid` SERIAL PRIMARY KEY NOT NULL, 
    `entityid` int, 
    `saddress1` varchar(255), 
    `saddress2` varchar(255), 
    `scity` varchar(255), 
    `cstate` char(2), 
    `spostalcode` varchar(10), 
    `stype` varchar(50), 
    CONSTRAINT `fk_entityaddress_entityid` 
     FOREIGN KEY (`entityid`) REFERENCES `entity`(`entityid`) 
);

結果錯誤:#1215 - 無法添加外鍵約束

我檢查該書的原始代碼,並且有sql文件,它給了我相同的錯誤。 ...有什麼不對,或者是在xampp中使用我的db的東西? 我嘗試只創建表格,然後在設計器中創建關係,但我得到程序錯誤...

我設置了InnoDB引擎。

感謝您的任何建議。

+0

順便問一下,你正在使用的書被嚴重過時 - PHP 6,預計其出版後不久公佈,但計劃不久之後改變,PHP 6不存在。你可能想拿起更近的東西。 – duskwuff 2014-09-12 23:59:27

+0

謝謝,但你也有一些建議嗎? ...我想在PHP中學習OOP,所以我讀到,這本書對於OOP是有益的,但是如果它存在更好的東西,我可以嘗試... – PeterB 2014-09-14 01:15:03

回答

0

entityid的類型必須在兩個表中都是相同的。 SERIALBIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的別名。因此,改變

`entityid` int, 

`entityid` BIGINT UNSIGNED NOT NULL, 
+0

非常棒,非常感謝。我只用BIGINT UNSIGNED NOT NULL嘗試 - 但那不起作用,但你的建議工作。 – PeterB 2014-09-12 23:12:06