Para una futura ocasión... no hace falta hacer los cambios en una estructura limpia.
Podes ir haciendo Alter, insert, drop sobre las tablas con datos. Si cambias de tipos de datos a campos pas pequeños (que no lo permite el motor), regularmente vas a tener que cambiar de nombre a la columna vieja, crear la nueva y voltearle los datos, para luego eliminar la última:
Imaginate una tabla con un campo desc, que es varchar(100) y algo como:
Código SQL
[-]
Alter table producto alter column desc to desc_old;
Alter table producto add desc varchar(75);
Update producto
set desc = substr(desc_old, 1, 75);
Alter table producto drop desc_old;
Es un poco mas trabajoso cuando haces tus scripts de actualización... pero siempre funcionará y no tenes que estar haciendo luego procesos de migración a de tu sistema a tu mismo sistema... yo eso me lo reservo cuando traigo datos de otro lado.
Además, de esta forma, podes llegar a tener varias (a veces muchas) instalaciones, y el trabajo siempre estará hecho desde el principio y tus actualizaciones serán mucho mas sencillas.
Es cuestión, primero, de ser ordenado, y luego de tener un poco de ingenio y paciencia para descubrir la forma de actualizarlo todo (que todo se puede) sobre los datos vivos.
Hasta luego.
