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
18
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
3706
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
3706
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