2011-12-27 18 views
64

Cómo corrijo el error de MySQL 'solo puede tener una columna de incremento automático'.Solo puede haber una columna automática

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; 

Respuesta

74

Mi MySQL dice "definición de la tabla incorrecta, no puede haber un solo auto columna y debe ser definida como una clave "Así que cuando he añadido clave primaria como debajo de ella comenzó a trabajar:

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

¿Cuál es el curso de acción correcto si la columna es parte de una clave compuesta? – 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

suena el mensaje de error completo:

ERROR 1075 (42000): incorrecta definición de la tabla; no puede haber sólo una columna de automóviles y se debe definir como una clave

Así que añadir primary key al campo 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; 
-2

Si este error wi ll ocurrió en 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); 

No se olvide de añadir el campo de clave principal ....!

2

Tenga en cuenta también que "clave" no significa necesariamente clave primaria. Algo como esto va a funcionar:

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; 

Este es un ejemplo artificial y probablemente no sea la mejor idea, pero puede ser muy útil en ciertos casos.

Cuestiones relacionadas