partir numero auto_increment mysql sql auto-increment ddl

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 tipos BLOB o TEXT .

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;