首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql #1215 -不能添加外键约束-但是为什么?

mysql #1215 -不能添加外键约束-但是为什么?
EN

Stack Overflow用户
提问于 2017-09-26 09:59:57
回答 1查看 25关注 0票数 0

我们有以下脚本:

代码语言:javascript
复制
CREATE TABLE `dataBodyChanges` (
`id` int( 10 ) unsigned NOT NULL AUTO_INCREMENT ,
`numberOfContainers` int( 11 ) NOT NULL ,
`quantityPerContainer` int( 11 ) NOT NULL ,
`grossWeight` double NOT NULL ,
`comment` varchar( 1000 ) NOT NULL ,
`file` int( 10 ) unsigned DEFAULT NULL ,
`user` int( 10 ) unsigned NOT NULL ,
`dataBodyId` int( 10 ) unsigned NOT NULL ,
`created_at` timestamp NULL DEFAULT NULL ,
`updated_at` timestamp NULL DEFAULT NULL ,
PRIMARY KEY ( `id` ) ,
KEY `databodychanges_databodyid_foreign` ( `dataBodyId` ) ,
CONSTRAINT `databodychanges_databodyid_foreign` FOREIGN KEY ( `dataBodyId` ) REFERENCES `dataBodies` ( `id` )
) ENGINE = InnoDB AUTO_INCREMENT =1113 DEFAULT CHARSET = utf8;

具有mysql输出:

1215 -无法添加外键约束

另一张表是:

使用材料;

代码语言:javascript
复制
CREATE TABLE `dataBodies` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `partNumber` varchar(8) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `totalOrderQuantity` varchar(9) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `containerPart` varchar(8) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `numberOfContainers` varchar(9) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `quantityPerContainer` varchar(9) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `kanbanNumber` varchar(4) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `matHandlingCode` varchar(12) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `grossWeight` varchar(9) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `partRemarks` varchar(18) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `AI11Z` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `AI12Z` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `AI13Z` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `AI14Z` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `AI15Z` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `AI16Z` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `AI17Z` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `filler` varchar(163) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `dataHeaderId` int(10) unsigned DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `databodies_dataheaderid_foreign` (`dataHeaderId`),
  CONSTRAINT `databodies_dataheaderid_foreign` FOREIGN KEY (`dataHeaderId`) REFERENCES `dataHeaders` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1113 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

我们不知道为什么..。

有谁能帮忙谁是这方面的主人吗?提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-26 10:05:41

在创建表时,它将检查是否已经创建了依赖表,如果没有,则会抛出该错误。

你首先需要设置的,

代码语言:javascript
复制
set foreign_key_checks = false; // above all

上线将暂时禁用外键检查(如果有的话)。

然后运行上面的查询。看起来不错。然后在执行查询之后,通过,

代码语言:javascript
复制
set foreign_key_checks = true;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46423358

复制
相关文章

相似问题

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