Ripristinare tabelle MySql corrotte (storage MyIsam)

Data: 07/03/2014 

 

Su MySQL server 5.6 (e forse anche qualche altra versione +/- vicina a questa) se si hanno tabelle di dimensione superiore a 4Gb, cancellando numerosi record e successivamente effettuando un OPTIMIZE TABLE il risultato è che la tabella viene corrotta e nemmeno il comando REPAIR TABLE è in grado di ripristinarla.

Il messaggio di errore a seguito del comando REPAIR TABLE è il seguante:
error 0 when fixing table
Can't get stat of '......\test_table.MYD' (Errcode: 0 - No error)
Operation failed
 
Attualmente sembra che il bug non sia stato corretto e se ne parla qui:
 
L'unico modo in cui sono riuscito a ripristinare la tabella è stato quello di usare il file myisamchk.exe preso da una versione meno recente di MySQL (nel mio caso 5.1).
 
Ecco la procedura:
 
Fare una copia di Backup dei file .FRM, .MYD, .MYI della tabella in questione (nel seguente caso email)
 
Eseguire dal prompt dei comandi il seguente comando:
C:\>myisamchk -o -f --sort_buffer_size=10485760 E:\MySQL\data\workflow\email.MYI
 
Successivamente, riavviare l'istanza di MySQL e la tabella dovrebbe essere nuovamente accessibile.


 

Questo è un badge Flickr che mostra le foto pubbliche e/o i video di scuderip. Crea il tuo badge qui.