2015-03-31 67 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; 

我认为关键领域必须从另一个表的键的开始(即你可以如果没有那些先于它的东西,就不要使用它)。

相关问题