2015-03-31 69 views
0

所以我有這樣的代碼:#1215 - 不能添加外鍵約束 - 沒有錯誤的數據類型

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; 
set foreign_key_checks = 0; 


# MAKE WAY FOR THE NEW 
DROP DATABASE IF EXISTS `Winkelbezoek`; 

CREATE DATABASE `Winkelbezoek` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; 
USE `Winkelbezoek`; 


CREATE TABLE IF NOT EXISTS `PERSOON` (
`BSN` int(11) NOT NULL, 
`Leeftijd` varchar(30) NOT NULL, 

CONSTRAINT 
    PRIMARY KEY (`BSN`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

CREATE TABLE IF NOT EXISTS `WINKEL` (
`Naam` varchar(40) NOT NULL, 
`Plaats` varchar(40) DEFAULT 'Breda', 
`Grootte` ENUM('Klein','Groot'), 

CONSTRAINT 
    PRIMARY KEY (`Naam`,`Plaats`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

CREATE TABLE IF NOT EXISTS `ISKLANTBIJ` (
`BSN` int(11) NOT NULL, 
`Datum` date NOT NULL, 
`Naam` varchar(40) NOT NULL, 
`Plaats` varchar(40) DEFAULT 'Breda', 

CONSTRAINT 
    PRIMARY KEY (`datum`), 
    FOREIGN KEY (`BSN`) REFERENCES PERSOON(`BSN`), 
    FOREIGN KEY (`Naam`) REFERENCES WINKEL(`Naam`), 
    FOREIGN KEY (`Plaats`) REFERENCES WINKEL(`Plaats`) ON UPDATE CASCADE ON DELETE CASCADE 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

當我試圖在phpMyAdmin來執行它,它給了我一個錯誤:#1215 - 無法添加外關鍵約束

我做了一些搜索,但唯一能找到哪些可能是wrond的是數據類型的不一致使用。現在我已經三重檢查了他們,我仍然無法找到這裏出了什麼問題。有誰知道什麼可能是錯誤?

回答

0

您可以使用MYsql接口來創建您的基礎,然後導出代碼。 如果你不知道如何編寫代碼,它可以幫助你。

+0

這是真的,但不能幫助我,因爲我推測我知道如何編碼。 – user3334936 2015-03-31 10:10:17

0

我不`噸使用外鍵非常多,但更改以下刪除錯誤:

CREATE TABLE IF NOT EXISTS `WINKEL` (
`Naam` VARCHAR(40) NOT NULL, 
`Plaats` VARCHAR(40) DEFAULT 'Breda', 
`Grootte` ENUM('Klein','Groot'), 

CONSTRAINT 
    PRIMARY KEY (`Naam`,`Plaats`), 
    KEY (`Plaats`,`Naam`) 
) ENGINE=INNODB DEFAULT CHARSET=latin1; 

我認爲關鍵領域必須從另一個表的鍵的開始(即你可以如果沒有那些先於它的東西,就不要使用它)。

相關問題