2017-09-26 21 views
0

我々次のスクリプトがあります。mysql#1215 - 外部キー制約を追加できません - なぜですか?

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 - 外部キー制約を追加することはできませんが

他のテーブルには、次のとおりです。

材料の使用;私たちは、なぜ....

を知らない

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; 

は、誰もが、この中でマスターが誰であるか助けてくださいことができますか? ありがとうございます!

+0

文字セットミスを見ないでください!彼らはすでに修正されている! – Erkman

答えて

0

テーブルを作成するときは、依存テーブルがすでに作成されているかどうかを確認し、そうでなければそのエラーをスローします。いずれかの場合には、まず、線の上

set foreign_key_checks = false; // above all 

を設定する必要がありますについては

は、一時的に外部キーチェックを無効にします。

上記のクエリを実行します。それが動作します。クエリを実行した後、

set foreign_key_checks = true; 
+0

ありがとう!できます :) – Erkman

関連する問題