首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >#1215 -无法添加外键约束-不是错误的数据类型

#1215 -无法添加外键约束-不是错误的数据类型
EN

Stack Overflow用户
提问于 2015-03-31 17:53:06
回答 2查看 50关注 0票数 0

所以我有这样的代码:

代码语言:javascript
复制
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 -无法添加外键约束

我做了一些搜索,但我唯一能找到的可能是错误的是对数据类型的不一致使用。到目前为止,我已经检查了三次,但我仍然找不到哪里出了问题。有人知道可能的错误是什么吗?

EN

回答 2

Stack Overflow用户

发布于 2015-03-31 18:02:29

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

票数 0
EN

Stack Overflow用户

发布于 2015-03-31 18:11:41

我不经常使用外键,但是修改下面的代码可以消除这个错误:

代码语言:javascript
复制
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;

我认为关键字段需要从另一个表中关键字的开头开始(即,如果没有前面的关键字,则不能从末尾开始使用)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29365685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档