Archives FluxBB.fr

Les archives de FluxBB.fr

Recherche rapide

Vous n'êtes pas identifié(e).

Version 1.4.13 : [.tar.gz][.zip] (maj 20/10/2014)
Pack langue française pour 1.4.x : [.zip] (maj 06/01/2012)

Branche 1.5.x : fluxbb.org

Version 1.2.24 fr (entièrement en français) : [.zip] (maj 26/08/2011)
Pack langue française pour 1.2.x : [.zip] [.rar] (maj 15/10/2006)

Vous avez un problème ?
Avant de poser votre question sur les forums d'entraide nous vous invitons à consulter :

#1 07-08-2008 17:57:09

Otomatic
Régisseur

Unable to fetch table status

Bonjour,

Et oui, c'est volontairement que j'ai mis ce titre que l'on voit fleurir de manière récurente lors de l'entrée dans le mode « administration » de forum installés chez free.fr - mais chez d'autres hébergeurs aussi.

Ce libellé d'erreur provient de la requête MySql effectuée par les instructions de la ligne 145 du fichier admin_index.php :

$result = $db->query('SHOW TABLE STATUS FROM `'.$db_name.'`') or error('Unable to fetch table status', __FILE__, __LINE__, $db->error());

Si on suit bien les diverses enfilades relatives à cette erreur, on arrive à la conclusion que pour supprimer ce problème, il suffit de modifier la ligne 145 incriminée en supprimant, purement et simplement, le nom de la base de données :

$result = $db->query('SHOW TABLE STATUS') or error('Unable to fetch table status', __FILE__, __LINE__, $db->error());

À mon humble avis, procéder de la sorte est un palliatif, un pis-aller qui « masque » les conséquences mais ne s'attaque pas aux causes de l'erreur.

Les paramètres pour se connecter au serveur MySql afférent à un site http hébergé chez free.fr sont :
- hôte : sql.free.fr
- base : login_sql
- user : login
- password : mot_de_passe_sql
  (Qui peut être différent des mots de passe courriel et FTP)
 
Le login est le nom du site sans free.fr, par exemple si le site est "http://tartempion.free.fr/", le login est "tartempion". Si le login ne comporte pas de point (.) login et login_sql sont identiques.
Dans le cas où le login comporte un point (.), par exemple "jean.tartempion", ledit point DOIT être remplacé par un tiret bas (_) dans le login_sql, soit "jean_tartempion".
 
Ceci ce traduit dans le fichier config.php par, entre autres, les lignes suivantes :

$db_type = 'mysql'; //Free ne supporte QUE mysql
$db_prefix = 'punbb_'; // Ou autre préfixe choisi lors de l'installation
$db_host = 'sql.free.fr';
$db_name = 'login_sql';
$db_username = 'login';
$db_password = 'mot_de_passe_sql';
$cookie_seed='quelque_chose_et_pas_vide';

Chez Free.fr on ne peut se connecter à la base de données ($db_name='login_sql') qu'à partir du site de même login ce qui fait que seul importe la validité du mot_de_passe_sql ; les noms $db_host, $db_name et $db_username n'ont aucune importance puisque le serveur MySql « sait » de quel login provient la demande de connexion.
C'est pourquoi cette permissivité à vu fleurir tout et n'importe quoi dans les réponses aux paramètres du fichier config.php.

Le « n'importe quoi » pour le nom de la base de données ($db_name) du fichier config.php pour Free.fr entrainera INÉVITABLEMENT l'erreur "Unable to fetch table status" lors du passage en mode administration.
En effet, la requête : query('SHOW TABLE STATUS FROM `'.$db_name.'`') retournera l'erreur si le nom de la base ($db_name) n'est pas "login_sql" puisque celle-ci ne sera pas trouvée.

La modification de la requête en :

$result = $db->query('SHOW TABLE STATUS') or error('Unable to fetch table status', __FILE__, __LINE__, $db->error());

comptabilise toutes les tables de la base de données, même celles qui n'ont aucun rapport avec PunBB.

Pour ne comptabiliser que les tables en rapport avec PunBB, il faut modifier la requête en :

$result = $db->query("SHOW TABLE STATUS LIKE '".$db_prefix."%'") or error('Unable to fetch table status', __FILE__, __LINE__, $db->error());

D'aucuns objecteront que le préfixe peut être vide ; c'est vrai. Mais, là aussi, c'est une manière de travailler sans aucune rigueur ; que se passera-t-il lors de l'ajout d'un « truc » qui voudra créer, lui aussi, une table "users" par exemple ; ça pourrait même écraser la table users de PunBB !

L'informatique en général et PHP et MySql en particulier doivent être utilisés de manière rigoureuse, pragmatique et cartésienne et non pas de façon empirique, même si les valeurs ne servent théoriquement à rien.

CQFD.

Dernière modification par Otomatic (30-03-2010 11:57:26)


Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi

Hors ligne

#2 09-08-2008 09:53:12

nico_somb
Habitué très actif

Re : Unable to fetch table status

Analyse intéressante wink

Hors ligne

#3 23-09-2009 11:52:19

vivien
Membre

Re : Unable to fetch table status

NOTE: il n'est pas nécéssaire de modifier les fichiers admins, le changement de $db_name avec les valeurs correct résous le probleme wink

Hors ligne

Pied de page des forums