1

エラーが発生しています:

子行を追加または更新できません: 外部キー制約が失敗しました ( mydb/requests, CONSTRAINT requests_ibfk_5FOREIGN KEY ( fixture_id) REFERENCES fixtures( fix_id) ON UPDATE CASCADE ON DELETE CASCADE)

次のテーブル構造があります。

CREATE TABLE IF NOT EXISTS `requests` (
  `request_id` int(11) unsigned NOT NULL auto_increment,
  `fixture_id` int(11) unsigned NOT NULL,
  `user_id` int(11) unsigned NOT NULL,
  `date_added` datetime NOT NULL,
  `date_modified` datetime default NULL,
  PRIMARY KEY  (`request_id`),
  UNIQUE KEY `fixture_id_2` (`fixture_id`,`user_id`),
  KEY `user_id` (`user_id`),
  KEY `date_added` (`date_added`),
  KEY `fixture_id` (`fixture_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=17 ;


CREATE TABLE IF NOT EXISTS `fixtures` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `fix_id` int(11) unsigned NOT NULL default '0',
  `fixture_date` date default NULL,
  `kickoff` time default NULL,
  `venue` varchar(35) default NULL,
  `home_score` tinyint(4) default NULL,
  `away_score` tinyint(4) default NULL,
  `date_added` datetime default NULL,
  `date_modified` datetime default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `fix_id` (`fix_id`),
  KEY `fixture_date` (`fixture_date`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=383 ;


ALTER TABLE `requests`
  ADD CONSTRAINT `requests_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE,
  ADD CONSTRAINT `requests_ibfk_5` FOREIGN KEY (`fixture_id`) REFERENCES `fixtures` (`fix_id`) ON DELETE CASCADE ON UPDATE CASCADE;

子テーブル (リクエスト) に共有 ID (fixture_id) を持つ親テーブル (フィクスチャ) の fix_id フィールドのレコードを更新すると、上記のエラーが発生します。

この整合性制約が失敗する理由がわかりません。両方のテーブルには、カスケードする必要がある正しいデータが既にありますか?

どんな助けでも大歓迎です。

4

2 に答える 2

0

これはすべて私自身のエラーでした。私は実際には同じ分野に2つの外国の制約がありました。私はただ1つを脱ぐ必要がありました。

于 2010-08-18T12:24:25.963 に答える
0

このエラーは、他のテーブルの参照が原因で発生します。両方のテーブルに同じ ID/データが存在する必要があります。そうでない場合は、存在しないデータを削除する条件を使用してください。

例 update tablename a set = 'field' (他のテーブル b からフィールドを選択) where a.data = b.data;

于 2013-05-06T06:29:20.140 に答える