Soru:
bir yabancı anahtar kısıtlaması ile bir tablo değiştirmeye çalışırken neden hata alıyorum?Değiştirme MySQL tablo hataları
Detayları:
Ben 1 tablo, tüm diğer spesifik tarih tabloları (. Yani USER_HISTORY
, BROWSER_HISTORY
, PICTURE_HISTORY
...) için bir temel tablo olarak kullanmak HSTORY
var. Ayrıca, PICTURE
ve USER
tablolarını da aradıkları gibi ekledim.
TARİHİ tablosu:
CREATE TABLE IF NOT EXISTS HISTORY
(
ID INT NOT NULL AUTO_INCREMENT,
VIEWERID INT NOT NULL ,
VIEWDATE TIMESTAMP NOT NULL DEFAULT NOW(),
PRIMARY KEY (ID),
FOREIGN KEY (VIEWERID) REFERENCES USER(ID)
)
engine=innodb;
KULLANIM tablosu: (herkes meraklı durumunda)
: RESİM TabloCREATE TABLE IF NOT EXISTS USER
(
ID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (ID)
)
engine=innodb;
(durumda herkes meraklı)
CREATE TABLE IF NOT EXISTS PICTURE ( ID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (ID) ) engine=innodb;
PICTURE_HISTORY tablosu: Bu işi kabul
Key column 'FOREIGNID' doesn't exist in table
Ben ilk FOREIGNID
oluşturmak zorunda demek, ancak örneklerin birçoğunda: CREATE TABLE IF NOT EXISTS PICTURE_HISTORY LIKE HISTORY;
ALTER TABLE PICTURE_HISTORY
ADD FOREIGN KEY (FOREIGNID) REFERENCES PICTURE(ID);
Ancak böyle yaptığımda, ben olsun SO üzerinde, yukarıda çalışmalıdır. Bunun neden oluştuğunu bilen var mı?
Bir örnek nerede görmek istiyorum Bu işe yaramalı ... "FOREIGNID" zaten mevcut değilse işe yaramaz. Sadece onu kullanan bir kısıtlama oluşturarak bir sütun oluşturamazsınız. –
@Michael iki farklı deyim ("FOREGINID" ve diğeri bir FOREIGN KEY 'oluşturmak için bir tane oluşturmak zorunda mıyım yoksa tek bir seferde yapabilir miyim? – puk
Aslında emin değilim - Hiç denemedim Eğer tek bir deyim denerseniz şikayet edeceğini bilmiyorum: Sadece bir deneyin: "ALTER TABLE PICTURE_HISTORY EKLE DIŞI EKLE DEĞİL DIŞI EKRAN İLETİŞİM fk_pictureid YABANCI ANAHTAR (FOREIGNID) REFERANSLAR RESİM (ID);' –