2011-12-27 9 views
64

हो सकता है कि मैं 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; 

उत्तर

74

मेरे 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; 
+2

कॉलम एक समग्र कुंजी का हिस्सा है तो कार्रवाई का सही तरीका क्या है? – Nubcake

6
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 
26

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

त्रुटि 1075 (42000): गलत तालिका परिभाषा; केवल एक ऑटो स्तंभ हो सकता है और यह तो auto_increment क्षेत्र के लिए primary key जोड़ने एक महत्वपूर्ण

के रूप में परिभाषित किया जाना चाहिए:

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; 
-2

यदि यह त्रुटि वाई कोडइग्निटर में होगा:

$fields=array(
'slno' => array(
     'type' => 'int', 
     'constraint' => 255, 
     'unsigned' => TRUE, 
     'auto_increment' => TRUE 
     ), 
'node_id' => array(
     'type' => 'int', 
     'constraint' => 255, 
     'unsigned' => TRUE 
     ), 
'node' => array(
     'type' => 'text', 
     'null' => TRUE 
     ) 

); 

$this->dbforge->add_field($fields); 

$this->dbforge->add_key("slno",TRUE); 

$this->dbforge->create_table($key,TRUE); 

प्राथमिक कुंजी फ़ील्ड जोड़ने के लिए मत भूलना ....!

2

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

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; 

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

संबंधित मुद्दे