ALTER TABLE cambia una tabla a el juego de caracteres actual. Si obtiene
un error de clave duplicada durante una operación ALTER TABLE,
la causa puede ser que el nuevo juego de caracteres haga equivaler dos claves, o que la
tabla está corrompida. En este último caso, debería ejecutar REPAIR
TABLE sobre dicha tabla.
Si ALTER TABLE termina abruptamente con el siguiente error,
el problema podría ser que MySQL falló durante una operación ALTER TABLE anterior, y que hay una antigua llamadaA- o
xxxB- por el sistema:
xxx
Error on rename of './database/name.frm'
to './database/B-xxx.frm' (Errcode: 17)
En este caso, vaya al directorio de datos de MySQL y borre todos los archivos que
tengan nombres que comiencen con A- o
B-. (Quizá debería moverlos a algún otro lugar en vez de borrarlos
directamente.)
ALTER TABLE trabaja de la siguiente manera:
Crea una tabla llamada A- con
los cambios estructurales demandados.
xxx
Copia todas las filas de la tabla original en A-.
xxx
Renombra la tabla original a
B-.
xxx
Renombra A- a el nombre de tabla
original.
xxx
Borra
B-.
xxx
Si algo falla durante la operación de renombrado, MySQL intenta deshacer los cambios.
Si algo falla seriamente (aunque esto no debería pasar), MySQL podría dejar la vieja tabla
como B-. Un renombrado simple de
los archivos de tabla al nivel de sistema debería devolverle todos sus datos.
xxx
Si usted utiliza ALTER TABLE en una tabla transaccional o si está
utilizando Windows o OS/2, ALTER
TABLE desbloquea la tabla si usted ha hecho un LOCK TABLE
previo sobre ella. Esto es debido a que InnoDB y estos sistemas
operativos no puede eliminar una tabla que está en uso.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.
