MySQL REPAIR su tutte le tabelle di un database

23 aprile 2015

​In alcuni casi dobbiamo automatizzare il comando REPAIR dato al prompt dei comandi di MySQL. Può succederead esempio che l'output di mysqlcheck ci fornisca una serie di righe del tipo:
error    : Table upgrade required. Please do "REPAIR TABLE `ctpndocumenti`" to fix it!

Una possibile soluzione per automatizzare l'operazione può essere uno script php del tipo:
$server = 'localhost';
$username = 'root';
$password = 'miapass';
$database = 'miodb';

$link = mysql_connect($server, $username, $password);
$query = "SHOW tables FROM $database";
$result = mysql_query($query, $link);
while($row = mysql_fetch_array($result))
$table[] = $row[0];

$num = count($table);
for($i = 0; $i < $num; $i++) {
$query = "REPAIR table $database.{$table[$i]}";
$result = mysql_query($query, $link);
}

N.B. Lo script è fornito "as is" senza alcuna garanzia circa completezza, accuratezza, puntualità o risultato nel suo uso, e senza garanzia di alcun tipo, espressa o implicita, incluse garanzie di performance, di commerciabilità e di adeguatezza ad uno scopo particolare. In nessun caso AWB Informatica potrà considerarsi responsabile per qualsiasi danno consequenziale all'utilizzo dello script, anche se informata della possibilità di tale danno.