Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Error SQL: "idUsuario" es un INTEGER, NOT NULL y AUTO INCREMENTAL

Estas en el tema de Error SQL: "idUsuario" es un INTEGER, NOT NULL y AUTO INCREMENTAL en el foro de Mysql en Foros del Web. Hola amigos, estoy desarrollando una serie de clases con las que manejar una BD, y me ha surgido un error. Cuando creo el código para ...
  #1 (permalink)  
Antiguo 12/07/2008, 17:53
Isdiar
Invitado
 
Mensajes: n/a
Puntos:
Exclamación Error SQL: "idUsuario" es un INTEGER, NOT NULL y AUTO INCREMENTAL

Hola amigos,

estoy desarrollando una serie de clases con las que manejar una BD, y me ha surgido un error. Cuando creo el código para añadir un nuevo usuario a la BD, me aparece el siguiente error:
Cita:
Column count doesn't match value count at row 1
Sé que significa que el número de campos de la BD no se corresponde con el número de campos que le mando a la BD.

Les cuento que en la BD tengo como primer campo uno llamado "idUsuario", y luego vienen otros como nombre, apellidos, dni,... El "idUsuario" es un campo INTEGER, NOT NULL y AUTO INCREMENTAL, por lo que no lo incluyo en la sentencia SQL. Dicha sentencia SQL es:
Cita:
comandoSql = "INSERT INTO usuarios (nombre, apellidos, dni, telefonoParticular, telefonoMovil, correoE, fechaNacimiento, observaciones, contactoFamilia1, telefonoTrabajo, domicilio, codigoPostal, localidad, provincia, pais, contactoFamilia2, contactoFamilia3) VALUES (";
comandoSql += "'" +nombre+ "', ";
comandoSql += "'" +apellidos+ "', ";
comandoSql += "'" +dni+ "', ";
comandoSql += "'" +telefonoParticular+ "', ";
comandoSql += "'" +telefonoMovil+ "', ";
comandoSql += "'" +correoE+ "', ";
comandoSql += "'" +fechaNacimiento.getStringAnnoMesDia()+ "', ";
comandoSql += "'" +observaciones+ "', ";
comandoSql += "'" +contactoFamilia1+ "', ";
comandoSql += "'" +telefonoTrabajo+ "', ";
comandoSql += "'" +domicilio+ "', ";
comandoSql += "'" +codigoPostal+ "', ";
comandoSql += "'" +localidad+ "', ";
comandoSql += "'" +provincia+ "'";
comandoSql += "'" +pais+ "', ";
comandoSql += "'" +contactoFamilia2+ "', ";
comandoSql += "'" +contactoFamilia3+ "'";
comandoSql += ") ";
O sea, que el problema viene del "idUsuario", pero es que quiero que cuando se agregue un nuevo usuario, dicho campo se autoincremente. ¿Cómo puedo hacerlo sin que aparezca el anterior error?

Muchas gracias amigos. Un saludo.

Última edición por Isdiar; 12/07/2008 a las 18:25
  #2 (permalink)  
Antiguo 12/07/2008, 20:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Error SQL: "idUsuario" es un INTEGER, NOT NULL y AUTO INCREMENTAL

El problema no es el campo idUsuario. Si fuese ese campo el mensaje de error diría "IDUSUARIO don't have default value" ( IDUSUARIO no tiene valor por defecto). Si no te manda ese mensaje es porque el problema no está allí. La cosa funciona bien.
En realidad el problema lo tienes en la construcción de la sentencia. Fíjate en este detalle:
Código:
comandoSql += "'" +provincia+ "'";
¿Dónde está la coma de separación entre este campo y el resto?

Exacto. No está.
Así éste campo y el siguiente se están encadenando en un sólo string, por lo que la cantidad de campos en VALUE() no es de 17 sino 16.
Para evitar este tipo de errores mi sugerencia es que pongas una visualización de la sentencia construida a modo de prueba antes de su ejecución, de modo de poder ver qué tan bien se construyó antes de enviarla a la base.
Es una forma de debuggearla. De todos modos ese stop para verla lo puedes borrar cuando sepas que la cosa está bien.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 14/07/2008, 16:14
Isdiar
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error SQL: "idUsuario" es un INTEGER, NOT NULL y AUTO INCREMENTAL

Juer... qué máquina!!
Muchísimas gracias "gnzsoloyo", me has salvado, pues tenía dolor de cabeza ya... ¡cómo un pequeñísimo error puede provocar tanto tiempo perdido!

Un abrazo!! Tema Cerrado!! Bendiciones!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:10.