Ajax HTML 5 Création site CMS Comment Design Logiciels Programmation RSS SQL Scriptol Scripts Mobiles
Forum
Tutoriel SQL
Configurer
Introduction
Tables SQL
Premier programme
Interface
Tutoriel SQLite
Conception Web
Flux RSS
RIA
SEO
Autre tutoriels
DOM et PHP
Construire un CMS
Ressources
Logiciels
Compilateur Scriptol
Scripts pour le Web


MySQL : Comment vérifier l'intégrité des tables

La commande CHECK TABLE permet de vérifier qu'une table n'est pas détériorée, mais comment tester toutes les tables de la base de donnée?

Le script PHP que nous fournissons permet de le faire, il fonctionne directement sur Wordpress, phpBB et fluxBB et peut être modifié pour d'autres CMS.

Il charge le fichier de configuration du CMS pour obtenir les variables d'accès à la base de données, mais différents CMS utilisent différents noms de variables et donc ces noms doivent être assignés aux noms par défaut du script, pour les CMS autres que Wordpress etc...

Comment le script fonctionne

Le script récupère la liste des tables avec la commande SQL SHOW TABLES:

$hndtable = mysql_query("SHOW TABLES")  

Pour chaque table il applique la commande CHECK TABLE:

$status = mysql_query("CHECK TABLE `$tname` EXTENDED")

Il récupère les données de résultat et les affiche:

while($messages = mysql_fetch_assoc($status))
{
   ...
   echo $messages['status'];
   ...
}

L'algorithme complet:

  $flag = true;
while(list($tname) = mysql_fetch_row($hndtable))
{
echo "Checking $tname : ";
$status = mysql_query("CHECK TABLE `$tname` EXTENDED");
if (!$status || mysql_num_rows($status) <= 0)
{
echo "Can not get status for table $tname.<br>";
$flag = false;
continue;
}
while($messages = mysql_fetch_assoc($status))
{
$r = $messages['Msg_text'];
echo $messages['status']." ".$messages['Msg_type']." $r<br>";
if($r != "OK") $flag = false;
}
}

Code qui est complété par les commandes d'accès à la base, que l'on trouvera dans le source à télécharger...

Exception

Certaines tables comme online sur fluxBB produisent la note suivante:

The storage engine for the table doesn't support check

Parce que c'est une table de type MEMORY ou autre raison. Ce n'est pas le fait d'une détérioration de la table.

Télécharger le script

  • Script de test des tables d'une base de données.

Pour l'utiliser, téléchargez le à la racine du CMS, par exemple dans /forum/ s'il s'agit d'un forum, et taper le nom du fichier dans la barre d'URL du navigateur, exemple:

http://www.scriptol.fr/forum/check.php

Supprimez ensuite le script sur le site.

© 2010-2011 Scriptol.fr