Ver Mensaje Individual
  #4 (permalink)  
Antiguo 19/07/2011, 09:17
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: Actualización de datos en Base Mysql

Es el proceso tabla a tabla, por el cual creas una base tal y como debería quedar la actualizada y vas migrando los datos desde la vieja a la nueva.
Luego o haces un backup compelto, y "pisas" la base vieja con ese backup, o bien rediriges las conexiones a la base nueva.

Si sólo hay que modificar indices y alguna que otra clave, por allí te conviene hacer un proceso que verifique una a una las claves y los índices para ver si hay que crearlos o no.

Esto, por ejemplo, verifica todas las tablas que posean una definición de FOREIGNK KEY, lo que permite hacer un proceso de eliminación automático, que luego se prosigue creando las FK nuevas:
Código MySQL:
Ver original
  1. SELECT DISTINCT TABLE_NAME, CONSTRAINT_NAME
  2. FROM information_schema.KEY_COLUMN_USAGE K
  3.   REFERENCED_COLUMN_NAME IS NOT NULL AND
  4.   CONSTRAINT_SCHEMA = 'fulmar' AND
  5.   CONSTRAINT_NAME !='PRIMARY'
  6. ORDER BY TABLE_NAME, CONSTRAINT_NAME
Yo uso esto para borrar todas las FK y volverlas a crear, esta vez con ayuda de un script que contiene todas las creaciones, las vuelvo a crear.

Una consulta parecida me permite saber si hay ciertos índices creados:
Código MySQL:
Ver original
  1. SHOW INDEX FROM `diario`;
Desde una aplicación, esto me devuelve un registro por cada campo de cada clave. SI la cantidad que tengo que encontrar y los nombres son iguales, entonces no lo genero. Si el índice existe, pero no tiene exactamente la estructura, lo borro y lo creo comno debe ser.
Es una tarea engorrosa pero es lo que tuve que diseñar, porque la aplicación fue enviada al mercado sin haber sido terminada y con la base en desarrollo.

¿Te sirven estas ideas?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)