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

#1062 - Duplicate entry '' for''

Estas en el tema de #1062 - Duplicate entry '' for'' en el foro de Mysql en Foros del Web. Buenas noches, abro un hilo para ver si alguno puede sacarme la duda, ya que consulte con gente que sabe y no quisieron ayudarme. Este ...
  #1 (permalink)  
Antiguo 15/09/2014, 20:49
 
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años
Puntos: 1
#1062 - Duplicate entry '' for''

Buenas noches, abro un hilo para ver si alguno puede sacarme la duda, ya que consulte con gente que sabe y no quisieron ayudarme.

Este error me tira cuando intento restaurar el backup de una base de datos de un sistema que eh programado sobre la base de datos ya existente que tengo en mi pc para trabajar directamente sobre el mismo, y así trabajar con los datos actuales y verdaderos del sistema.

Lo que hago en esos casos es eliminar la base de datos vieja que ya tenia para asi restaurar el nuevo backup.

Ahora la consulta, hay alguna forma de evitar eso? o de "hacerlo mejor"? Porque me parece que eliminar una base de datos para restaurar otra igual, pero mas actualizada, no es la mejor solución!

Desde ya muchas gracias!

Saludos
  #2 (permalink)  
Antiguo 16/09/2014, 03:52
 
Fecha de Ingreso: julio-2013
Mensajes: 87
Antigüedad: 10 años, 9 meses
Puntos: 9
Respuesta: #1062 - Duplicate entry '' for''

Creo que deberías darnos más información pegando el trozo del CREATE TABLE y su INSERT para poder ayudarte.

Saludos
  #3 (permalink)  
Antiguo 16/09/2014, 05:44
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: #1062 - Duplicate entry '' for''

Cita:
Este error me tira cuando intento restaurar el backup de una base de datos de un sistema que eh programado sobre la base de datos ya existente que tengo en mi pc para trabajar directamente sobre el mismo, y así trabajar con los datos actuales y verdaderos del sistema.
Migrar una base de datos a otro servidor puede ser una tarea fácil o extremadamente complicada, dependiendo de lo que se haga.
La solución más sencilla es eliminar la base destino y restaurar todo desde un backup que cree inclusive la base. Es lo más eficiente y simple.
Pero lo que estás tratando de hacer es migrar datos, no la base, y eso es muchísimo más complejo, en especial si ambas bases han trabajado independientemente, por cuanto deben existir muchas tablas con registros que tienen los mismos valores de PK para datos completamente diferentes. Eso sin contar con los que son replicas completas (iguales PK y datos relacionados).
Y allí está tu problema...

No puedes simplemente restaurar un backup en esas condiciones. Debes hacer todo un proceso de balanceo de datos que realice una verificación de todos los datos de cada tabla que se toma del servidor, respecto de los que están actualmente en la base destino, y realizar los ajustes necesarios.
No es una tarea fácil, y en mi primera experiencia profesional, me llevó a mi sólo, dos meses preparar los proceso neecsarios para hacer algo como eso, y sólo tenía 56 tablas en la base (hoy trabajo con bases de más de 600).
En esencia, para poder guiarte necesitaríamos conocer la estructura real de la base (con o sin datos), para poder analizar qué estrategia y secuencia de procecesos se requeriria para lograr esa migración.

Desde ya te digo que es una tarea complicada. No se trata simplemente de leer e insertar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 16/09/2014, 06:27
 
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años
Puntos: 1
Respuesta: #1062 - Duplicate entry '' for''

Claro, lo que hago yo es lo primero que dices gnzsoloyo, aunque la idea es mantener actualizados los datos, el backup lo hago con la base completa para evitar posibles futuros problemas, de esa forma si el servidor deja de funcionar por X motivo, la restauro así completa.

La base destino en mi caso es la base de mi pc que no interactúa con el sistema, yo solo la restauro para tenerla exactamente igual a la del servidor, que es la única utilizada. La de mi pc utilizo para seguir desarrollando el sistema.

Estoy mas o menos bien?

Gracias por su tiempo
  #5 (permalink)  
Antiguo 16/09/2014, 06:47
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: #1062 - Duplicate entry '' for''

En principio, mientras primero hagas un
Código MySQL:
Ver original
  1. DROP DATABASE tubasededatos
y recién entonces restaures la base, no debería haber problemas.

An cuanto al mensaje de clave duplicada, lo que pones en el titulo es insuuficiente para saber qué pasa, porque no sabemos cuál es la tabla que duplica tal clave.
Postea el mensaje de error completo. Con todo su texto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 16/09/2014, 06:56
 
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años
Puntos: 1
Respuesta: #1062 - Duplicate entry '' for''

Sé porque se produce el error, por ejemplo:

Tabla cuenta corriente
Col1 - proveedor
Col2 - producto
Col3 - kilos

Las dos primeras columnas forman una llave compuesta y solo varía la cantidad de kilos, y al querer restaurar dicha tabla me devuelve el error porque los datos ya existen.

Lo que me gustaría saber es de que forma puedo evitar hacer eso cada vez, tal vez creando un backup solo de datos??
  #7 (permalink)  
Antiguo 16/09/2014, 07:03
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: #1062 - Duplicate entry '' for''

¿Dropeas o no la base antes de correr el script del backup?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 16/09/2014, 07:08
 
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años
Puntos: 1
Respuesta: #1062 - Duplicate entry '' for''

si, ya lo habia dicho 2 veces creo! lo hago desde el phpmyadmin!;)
  #9 (permalink)  
Antiguo 16/09/2014, 07:21
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: #1062 - Duplicate entry '' for''

Mencionas "eliminar la base vieja", pero eso se podría hacer usando DELETEs, por ejemplo, ,que no impactarían en la creacion de las tablas por ejecución del script. Pero no se habrían borrado completamente si la secuencia de DELETEs no repeta la dependencia de FK.

Si estuviese dropeando la base, y el backup sólo aplica aesa base, ese error de clave duplicada no debería existir. Es un comportamiento anormal.
Ese tipo de error sólo puede ocurrir cuando la tabla donde se dispara el error contiene datos.

Entonces, segunda pregunta: ¿Estás realizando un backup exclusivamente de la base de datos que necesitas, o de todas las bases de datos?

Finalmente, un backup de sólo datos podría no ser buena idea, si no es un backup incremental. Si tomas los datos solamente sin ese cuidado, se intentará insertar datos ya existentes, y volveria a aparecer el problema.

Uno de los temas es que p`hpMyadmin no es MySQL, sino una interfaz programada en PHP. Pero es tan fiable como los programadores que la hicieron... que esté bien hecha no implica que haga exactamente lo que se supone que hace.
Yo prefiero trabajar con el MySQL Workbench, que es nativo y más potente. Con ese es más seguro realizar no solo backups y restauraciones, sino que peudes sincronizar una base local con otra remota (en tanto en el host remoto admitan conexiones externas).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 16/09/2014, 08:21
 
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años
Puntos: 1
Respuesta: #1062 - Duplicate entry '' for''

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Mencionas "eliminar la base vieja", pero eso se podría hacer usando DELETEs, por ejemplo, ,que no impactarían en la creacion de las tablas por ejecución del script. Pero no se habrían borrado completamente si la secuencia de DELETEs no repeta la dependencia de FK.
Es cierto, perdon! La sentencia que ejecuta el phpmyadmin cuando le doy eliminar efectivamente es DROP, asi que esa parte la hago bien! ;)

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Si estuviese dropeando la base, y el backup sólo aplica aesa base, ese error de clave duplicada no debería existir. Es un comportamiento anormal.
Ese tipo de error sólo puede ocurrir cuando la tabla donde se dispara el error contiene datos.
Exactamente ese sucede, intentaba restaurarla sin dropearla antes! *

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Entonces, segunda pregunta: ¿Estás realizando un backup exclusivamente de la base de datos que necesitas, o de todas las bases de datos?
Solo manejo una base de datos.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Finalmente, un backup de sólo datos podría no ser buena idea, si no es un backup incremental. Si tomas los datos solamente sin ese cuidado, se intentará insertar datos ya existentes, y volveria a aparecer el problema.
Entonces puedo/debo hacer un backup incremental? Phpmyadmin tiene esa posiblidad? debo investigarlo...

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Uno de los temas es que p`hpMyadmin no es MySQL, sino una interfaz programada en PHP. Pero es tan fiable como los programadores que la hicieron... que esté bien hecha no implica que haga exactamente lo que se supone que hace.
Yo prefiero trabajar con el MySQL Workbench, que es nativo y más potente. Con ese es más seguro realizar no solo backups y restauraciones, sino que peudes sincronizar una base local con otra remota (en tanto en el host remoto admitan conexiones externas).
Investigaré acerca de MySql Workbench también, parece muy interesante...

*Por eso queria saber si estaba bien lo que hacia o si habia alguna otra forma de hacerlo

Creo entonces por lo que voy entendiendo, que lo que hago hasta ahora esta bien:
1) Backup de la unica base de datos que tiene el sistema
2) DROP a la base de mi PC (Sistema local en desarrollo)
3) Importar el backup
  #11 (permalink)  
Antiguo 16/09/2014, 08:26
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: #1062 - Duplicate entry '' for''

Cita:
Creo entonces por lo que voy entendiendo, que lo que hago hasta ahora esta bien:
1) Backup de la unica base de datos que tiene el sistema
2) DROP a la base de mi PC (Sistema local en desarrollo)
3) Importar el backup
Exacto.
En esas condiciones no se debería disparar ningún error de clave duplicada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 16/09/2014, 08:30
 
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años
Puntos: 1
Respuesta: #1062 - Duplicate entry '' for''

Perfecto, me deja muy tranquilo saber que hacia las cosas bien, siendo que me parecía un poco extraño esa forma! Muchas gracias!

Para termina, una ultima pregunta no relacionada al tema, MySql Workbench puede funcionar en un servidor linux sin interfaz gráfica??
  #13 (permalink)  
Antiguo 16/09/2014, 09:33
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: #1062 - Duplicate entry '' for''

Cita:
Para termina, una ultima pregunta no relacionada al tema, MySql Workbench puede funcionar en un servidor linux sin interfaz gráfica??
Hay tres versiones para Linux
http://dev.mysql.com/downloads/workbench/
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #14 (permalink)  
Antiguo 16/09/2014, 10:37
 
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años
Puntos: 1
Respuesta: #1062 - Duplicate entry '' for''

Muchas gracias

Etiquetas: duplicate, entry
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 17:00.