प्रश्न:
जब एक विदेशी कुंजी बाधा के साथ एक मेज को बदलने की कोशिश त्रुटियां क्यों मिल रहा है?फेरबदल MySQL तालिका त्रुटियों
विवरण:
मैं 1 टेबल, HSTORY
जो मैं अन्य सभी विशिष्ट इतिहास तालिकाओं (। यानी USER_HISTORY
, BROWSER_HISTORY
, PICTURE_HISTORY
...) के लिए एक आधार तालिका के रूप में उपयोग किया है। मैंने PICTURE
और USER
टेबल भी शामिल किए हैं, जिन्हें वे भी कहते हैं।
इतिहास तालिका:
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;
उपयोगकर्ता तालिका: (मामले में किसी को भी उत्सुक है)
CREATE TABLE IF NOT EXISTS USER
(
ID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (ID)
)
engine=innodb;
चित्र तालिका: (मामले में किसी को भी उत्सुक है)
CREATE TABLE IF NOT EXISTS PICTURE
(
ID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (ID)
)
engine=innodb;
PICTURE_HISTORY तालिका:
CREATE TABLE IF NOT EXISTS PICTURE_HISTORY LIKE HISTORY;
ALTER TABLE PICTURE_HISTORY
ADD FOREIGN KEY (FOREIGNID) REFERENCES PICTURE(ID);
हालांकि, जब मैं यह कर, मैं:
Key column 'FOREIGNID' doesn't exist in table
मैं इस लेने का मतलब मैं पहली बार FOREIGNID
बनाने होंगे, लेकिन उदाहरण के कई में एसओ पर, उपर्युक्त काम करना चाहिए। किसी को पता है कि यह क्यों हो रहा है?
मैं एक उदाहरण है जहां देखना चाहते हैं जो काम करना चाहिए ... यह तब तक काम नहीं करेगा जब तक कि 'FOREIGNID' पहले से मौजूद न हो। आप इसे उपयोग करने वाली बाधा उत्पन्न करके केवल कॉलम नहीं बना सकते हैं। –
@ माइकल मुझे दो बदले वक्तव्य जारी करना होगा (एक 'FOREGINID' बनाने के लिए और दूसरा इसे एक विदेशी कुंजी बनाने के लिए' या क्या मैं इसे एक बार में कर सकता हूं? – puk
वास्तव में यह सुनिश्चित नहीं है - मैंने कभी कोशिश नहीं की है इसलिए मैं नहीं करता अगर आप एक कथन का प्रयास करते हैं तो यह शिकायत करेगा कि अगर यह एक कथन का प्रयास करता है तो बस शिकायत करें: 'वैकल्पिक तालिका चित्र' विदेशी मुद्रा में शामिल नहीं किया गया है जो कि कंटेंट नहीं किया गया है fk_pictureid फॉरवर्ड कुंजी (FOREIGNID) संदर्भ चित्र (आईडी); ' –