2017-09-06 13 views
-1

まず、このようなエラータイプに関するすべてのStackOverflowの質問を読みました。なぜこのエラーが発生するのか理解できません。 私はmeetingsテーブルがあります。エラー1215:外部キー制約を追加できません。フィールドには同じタイプがあります

ALTER TABLE `tts`.`meetings` 
ADD CONSTRAINT `meeting_pic_fk1` 
    FOREIGN KEY (`id`) 
    REFERENCES `tts`.`meeting_pictures` (`meeting_id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION; 

私はこれを持っているたびに:私もmeeting_picturesテーブルを持っている

CREATE TABLE `meetings` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(255) NOT NULL, 
    `description` text, 
    `city` varchar(255) DEFAULT NULL, 
    `start_time` datetime DEFAULT NULL, 
    `end_time` datetime DEFAULT NULL, 
    `owner` varchar(128) NOT NULL, 
    `is_private` tinyint(1) DEFAULT NULL, 
    `priority` int(11) DEFAULT NULL, 
    `accepted_count` int(11) DEFAULT NULL, 
    `creation_time` datetime DEFAULT CURRENT_TIMESTAMP, 
    `main_pic` text, 
    PRIMARY KEY (`id`), 
    KEY `user_id_idx` (`owner`), 
    KEY `city_fk_idx` (`city`), 
    KEY `weight_idx` (`priority`), 
    CONSTRAINT `city_fk` FOREIGN KEY (`city`) REFERENCES `cities` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, 
    CONSTRAINT `user_id` FOREIGN KEY (`owner`) REFERENCES `users` (`Id`) ON DELETE NO ACTION ON UPDATE NO ACTION, 
    CONSTRAINT `weight` FOREIGN KEY (`priority`) REFERENCES `priorities` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, 
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8; 

を私は新しいFKを追加しようとしてみましょう

CREATE TABLE `meeting_pictures` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `path` text NOT NULL, 
    `meeting_id` int(11) NOT NULL, 
    `user_id` varchar(128) NOT NULL, 
    PRIMARY KEY (`id`,`meeting_id`), 
    KEY `user_id_idx` (`user_id`), 
    CONSTRAINT `user_id_fkk` FOREIGN KEY (`user_id`) REFERENCES `users` (`Id`) ON DELETE NO ACTION ON UPDATE NO ACTION 
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; 

: "ERROR 1215:外部キー制約を追加できません"。なぜそれが起こっているのですか?両方の列の型は同じです。このようなFKを追加するにはどうすればいいですか? meeting_idid

おかげ

+0

いいえ、あなたはそれらすべてを読んでいません。これはよくある質問です。 '外部キー'の有無にかかわらずGoogleの「mysql more error info」または、あなたのエラーメッセージを ' - '同じタイプの ''などでGoogleに送信してください。また、[mcve]を読んでください。 MySQLのドキュメントでFKの言及を読んでください。 FKが宣言されたPKまたはUNIQUE NOT NULLを参照していると言います。常にあなたの質問/問題/ desiderataの多くの明確で簡潔な、特定のphrasingsをGoogleにグーグル。答えが見つからない場合は、タイトルと検索の概要を使用してください。 (実際にこのエラーが発生するのは1番目ですか?) – philipxy

+0

FKは、テーブルとカラムのリストの値が、参照されているテーブルとカラムのリストの他の場所に表示されていることを示しています。あなたは他の場所に出現したい価値の下位を何ですか? – philipxy

答えて

1

meeting_picturesの主キーは2つの部分で構成されています。私は推測していた場合、あなたが他の方向に行くために外部キー制約を意図:最低でも

ALTER TABLE tts.meeting_pictures 
    ADD CONSTRAINT meeting_pic_fk1 
     FOREIGN KEY (meeting_id) 
     REFERENCES tts.meetings (id) 
     ON DELETE NO ACTION 
     ON UPDATE NO ACTION; 

を、それがtts.meeting_picures(meeting_id)tts.meetings(id)を参照するように私には理にかなっています。

+0

あなたの返信ありがとうございますが、meeting_picturesテーブルに依存関係があるため、ミーティングテーブルからエンティティを削除しようとするとエラーが発生します。 – neustart47

+0

どうすればよいですか? meetin_pictureテーブルからすべての依存関係行を削除することはできますか? – neustart47

関連する問題