2015-11-19 98 views
0
CREATE TABLE `test`.`friendlist` (
    `Lid` INT NOT NULL, 
    `Pid` INT NOT NULL, 
    `Fid` INT NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (`Fid`), 
    INDEX `Pid_idx` (`Pid` ASC), 
    INDEX `Lid_idx` (`Lid` ASC, `Pid` ASC), 
    CONSTRAINT `Lid` 
    FOREIGN KEY (`Lid` , `Pid`) 
    REFERENCES `test`.`loginauthentication` (`Lid` , `Pid`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `Pid` 
    FOREIGN KEY (`Pid`) 
    REFERENCES `test`.`person` (`Pid`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION); 

操作失敗:將SQL腳本應用到數據庫時發生錯誤。 錯誤1215:無法添加外鍵約束 SQL語句:MySQL數據庫「創建表」查詢

+1

請問您可以發佈引用表的定義嗎?也許他們的某個PK的數據類型與你的FK的數據類型不匹配。 – cproinger

+1

您是否嘗試搜尋該錯誤訊息?谷歌搜索'mysql錯誤1215'帶來了幾個SE頁面,有人遇到了這個確切的錯誤。 –

回答

1

我嘗試執行SQL和我FO und that列Pid dosent存在於表登錄身份驗證,但我添加了列並再次運行您的SQL,它工作!

ALTER TABLE `loginauthentication`ADD COLUMN `Pid` int(11) NULL AFTER `Lid` 

[SQL] CREATE TABLE `friendlist` (
    `Lid` INT NOT NULL, 
    `Pid` INT NOT NULL, 
    `Fid` INT NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (`Fid`), 
    INDEX `Pid_idx` (`Pid` ASC), 
    INDEX `Lid_idx` (`Lid` ASC, `Pid` ASC), 
    CONSTRAINT `Lid` 
    FOREIGN KEY (`Lid` , `Pid`) 
    REFERENCES `loginauthentication` (`Lid` , `Pid`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `Pid` 
    FOREIGN KEY (`Pid`) 
    REFERENCES `person` (`Pid`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION); 
Affected rows: 0 
Time: 0.179ms 

Grettings!

-1

運行此DDL第一:

set foreign_key_checks=0; 

然後做查詢

CREATE TABLE test.friendlist ( 
Lid INT NOT NULL, 
    Pid INT NOT NULL, 
    Fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 
INDEX Pid_idx (Pid ASC), 
INDEX Lid_idx (Lid ASC, Pid ASC), 
CONSTRAINT Lid FOREIGN KEY (Lid , Pid) REFERENCES test.loginauthentication (Lid , Pid) ON DELETE NO ACTION ON UPDATE NO ACTION, 
CONSTRAINT Pid FOREIGN KEY (Pid) REFERENCES test.person (Pid) ON DELETE NO ACTION ON UPDATE NO ACTION); 

EX:用我自己的參考表進行相應的修改

mysql> show create table friendlistl 

| friendlist | CREATE TABLE `friendlist` (
    `Lid` int(11) NOT NULL, 
    `Pid` int(11) NOT NULL, 
    `Fid` int(11) NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (`Fid`), 
    KEY `Pid_idx` (`Pid`), 
    KEY `Lid_idx` (`Lid`,`Pid`), 
    CONSTRAINT `Lid` FOREIGN KEY (`Lid`, `Pid`) REFERENCES `test` (`Lid`, `Pid`) ON DELETE NO ACTION ON UPDATE NO ACTION, 
    CONSTRAINT `Pid` FOREIGN KEY (`Pid`) REFERENCES `test` (`idn`) ON DELETE NO ACTION ON UPDATE NO ACTION 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 | 
+0

如果你打算把他們全部關閉並將桌子切入桌面,有什麼限制?可怕。 –