Connaitre la taille de toutes mes base de données (via table_schema)

Résolu
cs_hdh Messages postés 140 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 20 août 2012 - 7 oct. 2010 à 17:34
cs_hdh Messages postés 140 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 20 août 2012 - 8 oct. 2010 à 11:52
Bonjour
Je piétine sur un script pour calculer le volume occupé par mes bases de données sur mon hébergement.
J'ai en effet plusieurs bases de données contenant plusieurs tables.

Auriez vous des pistes pour corriger mon script ??

en effet dans phpmyadmin quand je tape cette requete cela fonctionne impec
SELECT table_schema, round(sum(data_length+index_length)/1024/1024,4) AS 'Size' FROM information_schema.tables GROUP BY table_schema

mais dès que je l'insère dans ma page php je n'ai qu'un retour sur ma db "premierebase"... c'est pas une surprise car je demande la connexion "premierebase"
mysql_select_db( "premierebase" )        or die ( "Impossible d'ouvrir : ".mysql_error() );

Ma question est : comment autoriser mon script à se connecter à toutes les bases ? (sachant que mon user a bien les droits pour accéder à toutes les bases)

D'avance grand merci pour votre aide !!

si vous avez un script tout fait cela me convient tout autant, lol

H, penaud



le temps n'épargne pas ce que l'ont fait sans lui.. le php non plus

5 réponses

cs_hdh Messages postés 140 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 20 août 2012
8 oct. 2010 à 11:52
non , c'est je regrette c'est moi le roi de la connerie
m'étais trompé de serveur ca marche impec.
Voilà donc le code qui fonctionne tiptop (avec calcul total en Mo utilisé)
merci pour votre aide precieuse :-)

$user     = "uuu";
$pass     = "uuuuu";
$link     =  mysql_connect( "uuu", $user, $pass );
 
if ( ! $link )                die( "Impossible de se connecter à MySQL".mysql_error() );
mysql_select_db( $db )        or die ( "Impossible d'ouvrir : ".mysql_error() );


$query = mysql_query("SELECT table_schema, round(sum(data_length+index_length)/1024/1024,4) AS 'Size' FROM information_schema.tables GROUP BY table_schema ;",$link);
$nbTotal = mysql_num_rows($query);
print "<hr>".$nbTotal."<hr>";

$i=0;
WHILE($nbTotal!=$i)
    {
    $table_schema     = mysql_result($query,$i,"table_schema"); 
    $Size     = mysql_result($query,$i,"Size"); 
    $content .="<tr><td>".$table_schema."</td><td>".$Size."</td></tr>";
    $taille = $Size + $taille;
    $i++;
    }


echo "\".$content.\"----
total, ".$taille."
";
?>







le temps n'épargne pas ce que l'ont fait sans lui.. le php non plus
3
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
7 oct. 2010 à 17:44
Salut,

Je ne vois pas d'autre solution que de sélectionner chaque base une par une et exécuter la même requête à chaque fois.
Une boucle foreach sur un tableau contenant les noms de chaque base devrait faire l'affaire, avec une variable $total qui s'incrémente à chaque fois...

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
7 oct. 2010 à 18:02
Salut,

Je ne vois pas pourquoi ça ne fonctionnerait pas, ... et je ne vois pas non plus pourquoi du fais un
mysql_select_db( "premierebase" )
au lieu d'un :
mysql_select_db('information_schema')

????

Cordialement,

Kohntark -
0
cs_hdh Messages postés 140 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 20 août 2012
7 oct. 2010 à 18:35
Sniff... pas mieux... chkomprendpas

$db     = "information_schema";
$user     = "aaa";
$pass     = "aaaaaa";
$link     =  mysql_connect( "localhost", $user, $pass );
 
if ( ! $link )      die( "Impossible de se connecter à MySQL".mysql_error() );
mysql_select_db( $db )  or die ( "Impossible d'ouvrir : ".mysql_error() );


$query = mysql_query("SELECT table_schema, round(sum(data_length+index_length)/1024/1024,4) AS 'Size' FROM information_schema.tables GROUP BY table_schema ;",$link);
$nbTotal = mysql_num_rows($query);
print "<hr>".$nbTotal."<hr>";

$i=0;
WHILE($nbTotal!=$i)
    {
    $table_schema     = mysql_result($query,$i,"table_schema"); 
    $Size     = mysql_result($query,$i,"Size"); 
    $content .="<tr><td>".$table_schema."</td><td>".$Size."</td></tr>";
    $i++;
    }


echo "".$content."
";
?>

... et vous ??

le temps n'épargne pas ce que l'ont fait sans lui.. le php non plus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
7 oct. 2010 à 18:55
Pour éviter de dire une énième connerie j'ai fait le test : ça fonctionne (en local)

Quel est le résultat exact du script ?
Une erreur ?
L'utilisateur est il le même que celui que tu utilises avec phpMyAdmin ?


Cordialement,


Kohntark -
0
Rejoignez-nous