numero - insert auto_increment mysql
¿Cómo puedo evitar obtener este error de MySQL? Especificador de columna incorrecto para la columna NOMBRE DE COLUMNA? (5)
¿Cómo puedo evitar obtener este error de MySQL? Especificador de columna incorrecto para la columna topic_id ?
Error de MySQL...
#1063 - Incorrect column specifier for column ''topic_id''
Esquema SQL ...
CREATE TABLE discussion_topics (
topic_id char(36) NOT NULL AUTO_INCREMENT,
project_id char(36) NOT NULL,
topic_subject VARCHAR(255) NOT NULL,
topic_content TEXT default NULL,
date_created DATETIME NOT NULL,
date_last_post DATETIME NOT NULL,
created_by_user_id char(36) NOT NULL,
last_post_user_id char(36) NOT NULL,
posts_count char(36) default NULL,
PRIMARY KEY (topic_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
Citando el doc :
Algunos atributos no se aplican a todos los tipos de datos.
AUTO_INCREMENT
aplica solo a los tipos enteros y de punto flotante.DEFAULT
no se aplica a los tiposBLOB
oTEXT
.
En su caso, está intentando aplicar el modificador AUTO_INCREMENT
a la columna char
. Para resolver esto, elimine AUTO_INCREMENT
completo (eso significa que tendrá que generar una ID única en el nivel de la aplicación) o simplemente cambie el tipo de topic_id
por el entero correspondiente.
Como una nota al margen, no tiene mucho sentido usar char(36)
para almacenar el recuento de publicaciones, por lo que probablemente también se deba cambiar el tipo de columna. Parece que vas por este camino para evitar el desbordamiento de enteros, pero si estás tratando con más de 18446744073709551615
publicaciones (el número más grande que se puede almacenar en la columna BIGINT UNSIGNED
) en un solo tema, tienes un problema mucho mayor en tu lado probablemente )
Estaba teniendo el mismo problema, pero usando el tipo Long. Cambié por INT y funcionó para mí.
CREATE TABLE lists (
id INT NOT NULL AUTO_INCREMENT,
desc varchar(30),
owner varchar(20),
visibility boolean,
PRIMARY KEY (id)
);
La propiedad auto_increment
solo funciona para columnas numéricas (entero y punto flotante), no para columnas de caracteres:
CREATE TABLE discussion_topics (
topic_id INT NOT NULL AUTO_INCREMENT,
project_id char(36) NOT NULL,
topic_subject VARCHAR(255) NOT NULL,
topic_content TEXT default NULL,
date_created DATETIME NOT NULL,
date_last_post DATETIME NOT NULL,
created_by_user_id char(36) NOT NULL,
last_post_user_id char(36) NOT NULL,
posts_count char(36) default NULL,
PRIMARY KEY (topic_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
No se pueden incrementar automáticamente los valores char
. Debe ser int
o long
(enteros o puntos flotantes). Intenta con esto,
CREATE TABLE discussion_topics (
topic_id int(5) NOT NULL AUTO_INCREMENT,
project_id char(36) NOT NULL,
topic_subject VARCHAR(255) NOT NULL,
topic_content TEXT default NULL,
date_created DATETIME NOT NULL,
date_last_post DATETIME NOT NULL,
created_by_user_id char(36) NOT NULL,
last_post_user_id char(36) NOT NULL,
posts_count char(36) default NULL,
PRIMARY KEY (`topic_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
Espero que esto ayude
Para usar AUTO_INCREMENT
, debe definir la columna como INT
o tipos de punto flotante, no CHAR
.
AUTO_INCREMENT
usa solo valores sin signo, por lo que también es bueno usar UNSIGNED
;
CREATE TABLE discussion_topics (
topic_id INT NOT NULL unsigned AUTO_INCREMENT,
project_id char(36) NOT NULL,
topic_subject VARCHAR(255) NOT NULL,
topic_content TEXT default NULL,
date_created DATETIME NOT NULL,
date_last_post DATETIME NOT NULL,
created_by_user_id char(36) NOT NULL,
last_post_user_id char(36) NOT NULL,
posts_count char(36) default NULL,
PRIMARY KEY (topic_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;