Avatar billede dank Nybegynder
10. marts 2003 - 16:43 Der er 15 kommentarer og
1 løsning

finde tomme databaser?

Findes der en måde hvorpå man kan få returneret de databaser som ikke indeholder nogen tabeller, så de efterfølgende kan blive slettet?

eller andre alternativer?
Avatar billede dank Nybegynder
10. marts 2003 - 16:43 #1
(bemærk: Der er tale om *mange* databaser med *mange* forskellige logins, men jeg har root access)
Avatar billede gistybit Nybegynder
10. marts 2003 - 16:59 #2
well så vidt jeg ved ikke fra mysql konsollen, men med et phpscript kan snildt lade sig gøre...
Avatar billede bearhugx Nybegynder
10. marts 2003 - 17:00 #3
du kan jo bruge
show tables

for at se, om der er nogle tabeller...
Avatar billede gistybit Nybegynder
10. marts 2003 - 17:03 #4
jeps men hvis der er mange databaser så er det vel bedst at programmere et script som kan gøre det :o)
Avatar billede dank Nybegynder
10. marts 2003 - 17:04 #5
der er rigtigt mange - vi snakker tusinder :o}

Mon jeg skulle oprette spørgsmålet istedet i en PHP Kategori? Og se om der er en der kan hjælpe?
Avatar billede bearhugx Nybegynder
10. marts 2003 - 17:06 #6
er igang med at lave et script i php...
Avatar billede bearhugx Nybegynder
10. marts 2003 - 17:22 #7
dank >> kan du køre php - for så har jeg et script, som ligeomtrent er færdig til dig

PS : hvis scriptet støder på en db uden tabeller, skal den så bare slette db'en ???
Avatar billede dank Nybegynder
10. marts 2003 - 17:27 #8
Jeg har en løkke der returnerer alle brugerne (det er til 1go.dk) i

$user
$pass
$dbname

scriptet skal så undersøge om denne er tom, og hvis den er tom, så skal den slettes (i første omgang bare udskrive den, så jeg lige kan køre et par tests)

? hævet til 200 points
Avatar billede bearhugx Nybegynder
10. marts 2003 - 17:41 #9
Jeg har nu et script, som uden hæmning går ind og slettet alle databaser, hvor der er 0 tabeller...


det får du lige her ....
<html>
  <body>
<?php
  $link = mysql_connect("localhost")
    or die ("Could not connect");

  $dblist = mysql_query("show databases;")
    or die ("Can't get database-list");
   
  if( mysql_num_rows( $dblist ) == 0 ) {
    print "DU HAR INGEN Databaser --- burde du ikke mindst have mysql ???";
  } else {
    print "<h1> #databaser : ".mysql_num_rows($dblist)." </h1><hr/>";
   
    for($dbnr=0; $dbnr<mysql_num_rows($dblist); ++$dbnr) {
      mysql_data_seek ($dblist, $dbnr);
      $db = mysql_fetch_object($dblist);
      $dbnavn = $db->Database;     

      mysql_select_db ($dbnavn)
        or die ("Could not select database : ".$dbnavn);
      print "** Kigger i databasen <b>".$dbnavn."</b> <br/>";
     
      $tablelist = mysql_query("show tables;")
        or die ("Can't get table-list for ".$dbnavn);
     
      // find antal tabeller i nuværende database
      $numTables = mysql_num_rows($tablelist);
      if( $numTables == 0 ) {
        print " <span style='color:red; font-weight:bold;'>Databasen ".$dbnavn." har ingen tabeller, så er blevet slettet!!!</span>";
        mysql_query( "drop database ".$dbnavn.";" );
      } else {
        print " Databasen ".$dbnavn." har ".$numTables." række(r)...";
      }
      print "<hr/>";
    }
  }
?>
  </body>
</html>

hvis du har database-navnene i en variable, som hedder $dbname, så må du kunne bruge noget a la  :
(Dette er en forkortet (output er væk) udgave af ovenstående)

    mysql_select_db ($dbname)
        or die ("Could not select database : ".$dbnavn);

      $tablelist = mysql_query("show tables;")
        or die ("Can't get table-list for ".$dbname);
     
      // find antal tabeller i nuværende database - slet, hvis 0
      $numTables = mysql_num_rows($tablelist);
      if( $numTables == 0 ) {
        mysql_query( "drop database ".$dbname.";" );
      }

/Søren Munk Skrøder
Avatar billede bearhugx Nybegynder
10. marts 2003 - 17:42 #10
hvis du bare skal køre et par tests - så brug den første model hvor du udkommenterer

  mysql_query( "drop database ".$dbnavn.";" );

så du ikke sletter tabellen...
Avatar billede bearhugx Nybegynder
10. marts 2003 - 17:43 #11
Kan du bruge noget af ovenstående ??
Avatar billede dank Nybegynder
10. marts 2003 - 19:19 #12
Sorry jeg "forsvandt" - fik lige gæster :)

det ser rigtigt godt ud.. jeg prøver mig lige frem ved 2100 tiden og så vender jeg tilbage med det samme.
Avatar billede dank Nybegynder
11. marts 2003 - 23:31 #13
virker ser det ud til.. opret svar til point.. og 1000 tak for hjælpen!!!
Avatar billede bearhugx Nybegynder
12. marts 2003 - 00:01 #14
^ svar ^

Håber du fik det til at virke ... ellers så må du lige vende tilbage ... (bare skriv i dette spm, hvis der er tvivlsspørgsmål eller ting, du skal have uddybet...)
Avatar billede dank Nybegynder
18. marts 2003 - 23:28 #15
takker! :o)
Avatar billede dank Nybegynder
18. marts 2003 - 23:28 #16
sorry jeg var lidt lang tid om at lukke.. havde lige nogle andre sideløbende projekter!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester