Connaitre la taille de toutes mes base de données (via table_schema) [Résolu]

Signaler
Messages postés
140
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 août 2012
-
Messages postés
140
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 août 2012
-
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

Messages postés
140
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 août 2012

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
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
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à ;)
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
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 -
Messages postés
140
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 août 2012

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
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
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 -