miércoles, 19 de septiembre de 2007

MySQL Error: The table is full

El otro día nuestra aplicación nos sorprendió con un mensaje del driver de MySQL de lo más cachondo: "The table 'tableName' is full" donde 'tableName' es una de las principales tablas de la BD. Hoy digo cachondo; el otro día empecé a sudar como un pollito...

Tenemos un servidor de base de datos MySQL Community Edition 5.0 en la que el volumen de datos empieza a ser importante. Estoy hablando de alguna tabla con 22 millones de filas por ejemplo. Pero bueno, hasta ahora no nos habíamos preocupado porque la BD ocupaba poco más de 4GBytes de espacio en disco, y con los discos de hoy en día, ¡no problem!

Consulto el error al amigo Google, y me cuenta que el tamaño máximo de las tablas de MySQL está únicamente limitado por las restricciones del sistema operativo en cuanto a tamaño máximo de archivo, no por límites internos de la base de datos. La aplicación y el servidor de base de datos residen en la misma máquina, máquina que lleva XP Pro, por lo que, ¡imposible! Según la web de MySQL, ¡el tamaño máximo de fichero para NTFS es de 2TeraBytes! ¡Ni de coña vamos!

Bien, es entonces cuando en medio de más sudores, temblores, suspiros que hacen presagiar lo peor, y comentarios sin sentido, se nos ocurre la brillantes idea, por casualidad, de mirar el sistema de archivos del disco duro: para nuestra sorpresa, ¡nuestro querido XP Pro viene montado sobre FAT32! ¡Bravo! No sé porqué, pero todos dábamos por hecho que XP Pro vendría montado sobre NTFS. ¡Pues no! Venía así, con FAT32, de la tienda del barrio.

En medio de la tensión, la palabra que más alto suena es formatear y reinstalar todo de nuevo. ¡Menudo marrón! Hay comentarios llenos de ánimo como "aunque hagamos backup de la base de datos y luego restore, ya verás, seguro que perdemos datos", etc. Lo típico...

De repente, Google nos da un halo de esperanza: la utilidad convert.
Aparentemente, basta con teclear desde una ventana de comandos "CONVERT C: /fs:ntfs" para que la partición, en el siguiente reinicio, se convierta de FAT32 a NTFS, y lo más importante, ¡sin perder los datos! De perdidos al río, se hace un backup de la BD, se abre una ventana de comandos y se teclea la frase de la muerte. Más sudor, hasta el más ateo rezando a no sabemos quién, y de repente...pulsación nada convincente al "enter". ¡Allá vamos! La utilidad pregunta por la etiqueta de la unidad, la introducimos, y avisa que tiene que desmontar la unidad para proseguir. Tecleamos 's' minúscula confirmando la acción y un nuevo toquecito aún menos convincente al "enter". Hay que salir de la consola, y reiniciar la máquina.

¡No pensaba que un reinicio podía durar tanto! Entonces aparece la típica ventana azul (distinto de pantallazo azul) de comprobación de errores en disco, y en cosa de 15 minutos...voilá! Disco en formato NTFS y los datos a buen recaudo. Arranca la aplicación y hasta hoy felices y contentos sin ver el demoniaco mensaje de "The table 'tableName' is full".

En fin, casualidades del informático: un siniestro error de MySQL me ha permitido descubrir una utilidad milagrosa como Convert. ¡Qué grande!

SaludoX.


No hay comentarios: