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
xxx
B-
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.