SORU
10 AĞUSTOS 2009, PAZARTESİ


Mysql hata 1452 - Olamaz ya çocuk bir satır ekleyin güncelleme: yabancı anahtar kısıtlaması başarısız

Garip bir sorun yaşıyorum, referanslar, başka bir tablonun yabancı anahtarı eklemek için çalışıyorum, ama nedense başarısız oluyor. MySQL sınırlı bilgimle, muhtemelen şüpheli olabilecek tek şey farklı bir tablo başvurusu için çalışıyorum tek başvuran yabancı anahtar vardır.

Burada tablo ilişkilerim phpMyAdmin yoluyla oluşturulan bir görüntü: Relationships

Bir HARİTAYI her iki tablo üzerinde TABLO OLUŞTURMA sorgu yaptım, sourcecodes_tags tablo yabancı anahtar, sourcecodes başvurulan bir tablo.

CREATE TABLE `sourcecodes` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `user_id` int(11) unsigned NOT NULL,
 `language_id` int(11) unsigned NOT NULL,
 `category_id` int(11) unsigned NOT NULL,
 `title` varchar(40) CHARACTER SET utf8 NOT NULL,
 `description` text CHARACTER SET utf8 NOT NULL,
 `views` int(11) unsigned NOT NULL,
 `downloads` int(11) unsigned NOT NULL,
 `time_posted` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 PRIMARY KEY (`id`),
 KEY `user_id` (`user_id`),
 KEY `language_id` (`language_id`),
 KEY `category_id` (`category_id`),
 CONSTRAINT `sourcecodes_ibfk_3` FOREIGN KEY (`language_id`) REFERENCES `languages` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 CONSTRAINT `sourcecodes_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 CONSTRAINT `sourcecodes_ibfk_2` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1

CREATE TABLE `sourcecodes_tags` (
 `sourcecode_id` int(11) unsigned NOT NULL,
 `tag_id` int(11) unsigned NOT NULL,
 KEY `sourcecode_id` (`sourcecode_id`),
 KEY `tag_id` (`tag_id`),
 CONSTRAINT `sourcecodes_tags_ibfk_1` FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1

Harika eğer biri burada neler olduğunu bana söyleyebilir eğer MySQL ile resmi bir eğitim ya da bir şey vardı:) olurdu

Teşekkürler.

Düzenleme:Bu hatayı oluşturan kod

ALTER TABLE sourcecodes_tags ADD FOREIGN KEY (sourcecode_id) REFERENCES sourcecodes (id) ON DELETE CASCADE ON UPDATE CASCADE

CEVAP
10 AĞUSTOS 2009, PAZARTESİ


Oldukça muhtemel. Bu kurtulmak için ilk.

İşte bu kimlik bulan bir sorgu:

SELECT DISTINCT sourcecode_id FROM 
   sourcecodes_tags tags LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id 
WHERE sc.id IS NULL;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DJPixcell

    DJPixcell

    20 NİSAN 2007
  • Jesse Pimenta

    Jesse Piment

    5 EKİM 2011
  • Tina Chen

    Tina Chen

    26 Mayıs 2012