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

Definir un auto_increment en un campo con datos

Estas en el tema de Definir un auto_increment en un campo con datos en el foro de Mysql en Foros del Web. Estimados, Necesito de su ayuda. Importé una base SQL en un MySQL, lo que me costó bastante. Finalmente lo logré pero perdí el valor "auto_increment" ...
  #1 (permalink)  
Antiguo 08/09/2011, 13:52
Avatar de pabloe9k  
Fecha de Ingreso: julio-2008
Ubicación: Argentina
Mensajes: 190
Antigüedad: 16 años, 4 meses
Puntos: 3
Pregunta Definir un auto_increment en un campo con datos

Estimados,

Necesito de su ayuda. Importé una base SQL en un MySQL, lo que me costó bastante. Finalmente lo logré pero perdí el valor "auto_increment" de un campo que es primary_key.
El punto es que cuando quiero definirlo nuevamente como "auto_increment" me devuelve el siguiente error:

Código:
ALTER TABLE  `llamados` CHANGE  `llamados_id`  `llamados_id` INT( 11 ) NOT NULL AUTO_INCREMENT

MySQL ha dicho: 

#1062 - Duplicate entry '1' for key 1
Por lo que entiendo, la petición no se pudo llevar a cabo porque ya existen datos en ese campo. Cómo podría solucionarlo?

Podrán ayudarme?
Muchas gracias.

Saludos.
  #2 (permalink)  
Antiguo 09/09/2011, 02:43
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Definir un auto_increment en un campo con datos

No se si servirá pero por el error que te da quizas si...

Primero ejecuta

ALTER TABLE llamados AUTO_INCREMENT=X

donde X sea el valor mas alto de llamados_id mas 1.

Luego ejecuta tu query

ALTER TABLE `llamados` CHANGE `llamados_id` `llamados_id` INT( 11 ) NOT NULL AUTO_INCREMENT

No se si te funcionara pero por intentarlo no pierdes nada....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 09/09/2011 a las 02:50
  #3 (permalink)  
Antiguo 09/09/2011, 09:57
Avatar de pabloe9k  
Fecha de Ingreso: julio-2008
Ubicación: Argentina
Mensajes: 190
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Definir un auto_increment en un campo con datos

Cita:
Iniciado por quimfv Ver Mensaje
No se si servirá pero por el error que te da quizas si...

Primero ejecuta

ALTER TABLE llamados AUTO_INCREMENT=X

donde X sea el valor mas alto de llamados_id mas 1.

Luego ejecuta tu query

ALTER TABLE `llamados` CHANGE `llamados_id` `llamados_id` INT( 11 ) NOT NULL AUTO_INCREMENT

No se si te funcionara pero por intentarlo no pierdes nada....
Gracias, pero no funciona.
El error es exactamente el mismo.
  #4 (permalink)  
Antiguo 09/09/2011, 10:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Definir un auto_increment en un campo con datos

El problema es que en el campo `llamados_id`de esa tabla tienes al menos dos registros con el mismo valor en ese campo. De hecho, el primer campo duplicado tiene el llamados_id=1.
Esto puede haber sido un defecto de la migración o una incorrecta definición de clave.

La forma más fácil de verificarlo es hacer algo como:
Código MySQL:
Ver original
  1. FROM llamados
  2. GROUP BY llamados_id
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 09/09/2011, 10:17
Avatar de pabloe9k  
Fecha de Ingreso: julio-2008
Ubicación: Argentina
Mensajes: 190
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Definir un auto_increment en un campo con datos

Cita:
Iniciado por gnzsoloyo Ver Mensaje
El problema es que en el campo `llamados_id`de esa tabla tienes al menos dos registros con el mismo valor en ese campo. De hecho, el primer campo duplicado tiene el llamados_id=1.
Esto puede haber sido un defecto de la migración o una incorrecta definición de clave.

La forma más fácil de verificarlo es hacer algo como:
Código MySQL:
Ver original
  1. FROM llamados
  2. GROUP BY llamados_id
Inicialmente supuse lo mismo que vos, pero no es así.
De hecho, el resultado de este query arroja:

Código:
MySQL ha devuelto un valor vacío (i.e., cero columnas). (La consulta tardó 0.0784 seg)
Sigo sin poder resolverlo

Etiquetas: definir, sql, campos
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:46.