2011-12-27 8 views
64

Come si corregge l'errore da MySQL 'si può avere solo una colonna di incremento automatico'.Può esserci solo una colonna automatica

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; 

risposta

74

mio MySQL dice "definizione della tabella non corretta, non ci può essere un solo auto colonna e deve essere definito come una chiave "Così quando ho aggiunto chiave primaria come di seguito ha iniziato a lavorare:

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

Qual è la linea di condotta corretta se la colonna fa parte di una chiave composta? – 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

Il messaggio di errore completo suona:

Errore 1075 (42000): corretta definizione della tabella; non ci può essere solo una colonna AUTO e deve essere definito come chiave

Quindi aggiungere primary key al auto_increment campo:

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

Se questo errore wi Si è verificato in CodeIgniter:

$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); 

Non dimenticare di aggiungere il campo chiave primaria ....!

2

Nota anche che "chiave" non significa necessariamente chiave primaria. Qualcosa del genere funziona:

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; 

Questo è un esempio inventato e probabilmente non l'idea migliore, ma può essere molto utile in alcuni casi.

Problemi correlati