केवल एक ऑटो कॉलम हो सकता है


104

मैं MySQL से त्रुटि को कैसे ठीक कर सकता हूं 'आपके पास केवल एक ऑटो वेतन वृद्धि कॉलम हो सकता है।'

CREATE TABLE book (
   id INT AUTO_INCREMENT NOT NULL,
   accepted_terms BIT(1) NOT NULL,
   accepted_privacy BIT(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

जवाबों:


119

My MySQL का कहना है "गलत तालिका परिभाषा; केवल एक ही ऑटो कॉलम हो सकता है और इसे एक कुंजी के रूप में परिभाषित किया जाना चाहिए " इसलिए जब मैंने प्राथमिक कुंजी जोड़ा तो नीचे काम करना शुरू कर दिया:

CREATE TABLE book (
   id INT AUTO_INCREMENT NOT NULL,
   accepted_terms BIT(1) NOT NULL,
   accepted_privacy BIT(1) NOT NULL,
   primary key (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

6
यदि स्तंभ समग्र कुंजी का हिस्सा है, तो कार्रवाई का सही तरीका क्या है?
नौबके

तालिका बदलते समय वाक्यविन्यास क्या है?
माइक हैरिसन

2
@ माइक हियरसन ऐसा लगता है जैसे आप बस लगा सकते हैं ALTER TABLE book ADD id INT AUTO_INCREMENT NOT NULL, ADD PRIMARY KEY (id);
suxur

34

पूर्ण त्रुटि संदेश लगता है:

ERROR 1075 (42000): गलत तालिका परिभाषा; केवल एक ऑटो कॉलम हो सकता है और इसे एक कुंजी के रूप में परिभाषित किया जाना चाहिए

तो जोड़ने primary keyके लिए auto_incrementक्षेत्र:

CREATE TABLE book (
   id INT AUTO_INCREMENT primary key NOT NULL,
   accepted_terms BIT(1) NOT NULL,
   accepted_privacy BIT(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

13

यह भी ध्यान दें कि "कुंजी" का अर्थ प्राथमिक कुंजी नहीं है। कुछ इस तरह काम करेगा:

CREATE TABLE book (
    isbn             BIGINT NOT NULL PRIMARY KEY,
    id               INT    NOT NULL AUTO_INCREMENT,
    accepted_terms   BIT(1) NOT NULL,
    accepted_privacy BIT(1) NOT NULL,
    INDEX(id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

यह एक आकस्मिक उदाहरण है और शायद सबसे अच्छा विचार नहीं है, लेकिन कुछ मामलों में यह बहुत उपयोगी हो सकता है।


इससे मुझे ऐसी स्थिति में मदद मिली जहां मैं आसान अद्यतन के लिए एक समग्र कुंजी परिभाषित करना चाहता था, लेकिन मैं डिबगिंग उद्देश्यों के लिए एक ऑटो-इंक्रीमेंटिंग आईडी भी रखना चाहता था। क्या कुछ ऐसा है जो मुझे जोखिम के संदर्भ में पता होना चाहिए, इसके अलावा थोड़ा धीमा संभवतः लिखता है?
मैटियस मार्टेंस

2
@Mattias नहीं, मुझे विश्वास नहीं है कि कोई विशेष जोखिम है। यह जानबूझकर समर्थन किया जाता है, ऑटो कॉलम को शुद्ध रूप से सम्मेलन (और सादगी के लिए) द्वारा प्राथमिक कुंजी माना जाता है।
मैथ्यू पढ़ें 3

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.