qué instrucciones entre diferencia dcl componentes mysql ddl

mysql - instrucciones - Solo puede haber una columna de auto



instrucciones ddl (5)

¿Cómo puedo corregir el error de MySQL ''solo puedes tener una columna de incremento automático''?

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;


El mensaje de error completo suena:

ERROR 1075 (42000): definición incorrecta de la tabla; solo puede haber una columna auto y debe definirse como una clave

Así que agrega 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;


Mi MySQL dice "Definición incorrecta de la tabla; solo puede haber una columna automática y debe definirse como clave ". De modo que cuando agregué la clave principal, comencé 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;


Si se produjo este error 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 olvides agregar el campo de la clave principal ...!


Tenga en cuenta también que "clave" no necesariamente significa clave primaria . Algo como esto 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 la mejor idea, pero puede ser muy útil en ciertos casos.


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