#1215 - 无法添加外键约束 - 没有错误的数据类型

时间:2015-03-31 09:53:06

标签: mysql foreign-keys

所以我有这段代码:

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 - 无法添加外键约束

我做了一些搜索,但我唯一能找到的东西就是数据类型的不一致使用。我现在已经三次检查了它们,我仍然无法找到这里出了什么问题。有谁知道可能是什么错误?

2 个答案:

答案 0 :(得分:0)

您可以使用MYsql界面创建基础,然后导出代码。 如果您不知道如何编写代码,它可以帮助您。

答案 1 :(得分: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;

我认为关键字段需要从另一个表上的键的开头开始(IE不能使用一个,而不使用前面的那个)。