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