[SQL] Kollation aller Tabellen ändern

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Galaxydarkness, 11. Juli 2009 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 11. Juli 2009
    Kollation aller Tabellen ändern

    Moin,

    jemand den SQL befehl dafür?

    PHP:
    alter database datenbankname CONVERT TO CHARACTER SET latin1 COLLATE  latin1_general_ci ;
    funzt leider nich

    Der befehl:

    PHP:
    ALTER TABLE access CONVERT TO CHARACTER SET latin1 COLLATE latin1_general_ci
    funzt, allerdings keine lust da 120 tabellen von hand zu editieren
     
  2. 11. Juli 2009
    AW: Kollation aller Tabellen ändern

    Einfach ein Skript schreiben das das macht oder ein fertiges ergoogeln?
    Ich hatte mal eins, ich schau mal ob ich es wieder finde.

    Oder das abändern: Server Support Forum - Einzelnen Beitrag anzeigen - Kollation von Tabellen ändern ?!
     
  3. 11. Juli 2009
    AW: Kollation aller Tabellen ändern

    Meinste das?
    PHP:
    <?
    #########################################################################
    #########################################################################
    ##                                                                     ##
    ## Script coded by Eric Reiche                                         ##
    ##                                                                     ##
    ## Version: 0.2 / 2006-08-16 17:35 GMT + 100                           ##
    ## Version 0.2 contains bugfixes                                       ##
    ##                                                                     ##
    ## Inspired by serversupportforum.de user monotek                      ##
    ## ( http://www.serversupportforum.de/forum/sql/        \              ##
    ## 9279-kollation-von-tabellen-aendern.html#post67293 )                ##
    ## [Check link  for bashscript]                                        ##
    ##                                                                     ##
    ## Web: http://www.ericreiche.net  ||  Mail: mail [AT] ericreiche [DOT] net  ##
    ##                                                                     ##
    ## You can spread this script, as long as you don't touch this copymark     ##
    ##                                                                     ##
    #########################################################################
    #########################################################################


    //Config:
      
    $mysqlserver  'localhost' ;     //Host
      
    $mysqluser  'user' ;            //User [It's recommended to use root]
      
    $mysqlpw  'pw' ;                  //Password
      
    $mysqldb  'datenbank' ;        //Database
      
    $stepping  100 ;                //Queries per Page
      
    $tabletoskip  'really_big_table' //If you have a really big table, you can enter it here,
                                     //it will be skipped, to prevent a script abort
                                   
      
    $collation  'latin1_general_ci' ;
      
    $character_set  'latin1' ;
    //End Config

    #######################################################################
    # Do not change anything from here, until you know what you're doing  #
    #######################################################################
      
    if(isset( $_GET [ 'start' ]) &&  is_numeric ( $_GET [ 'start' ])){
      
    $start  $_GET [ 'start' ];
      if(
    $start  0 ){
        
    $start  $start  $stepping ;
      }
    }else{
      
    $start  0 ;
    }
    //mysql connect
    @ mysql_connect ( $mysqlserver $mysqluser $mysqlpw ) OR die( "No Conncection to Server. Report: :" . mysql_error ());
    mysql_select_db ( $mysqldb ) OR die( "couldn't select database, Report: " . mysql_error ());
    unset(
    $mysqlserver );
    unset(
    $mysqluser );
    unset(
    $mysqlpw );

    $i  0 ;
    print(
    '<pre>' );
    if(
    $start  ==  0 ){
      
    $sql  'ALTER DATABASE ' . $mysqldb . ' DEFAULT CHARACTER SET ' . $character_set . ' COLLATE ' . $collation . ";\r\n" ;
      
    mysql_query ( $sql );
      print(
    $sql );
    }

    $sql  'Show tables;' ;
    $result1  mysql_query ( $sql );
    while(
    $tables  mysql_fetch_assoc ( $result1 )){
        if(
    $start  ==  0 ){
        
    $sql  'ALTER TABLE ' . $tables [ 'Tables_in_' . $mysqldb ]. ' DEFAULT CHARACTER SET ' . $character_set . ' COLLATE ' . $collation . ";\r\n" ;
        
    mysql_query ( $sql );
        print(
    '&nbsp;&nbsp;' . $sql );
      }
      
      
    $sql  'Show columns FROM ' . $tables [ 'Tables_in_' . $mysqldb ];
      
    $result2  mysql_query ( $sql );
      
      while(
    $columns  mysql_fetch_assoc ( $result2 )){
        
        if(
    substr_count ( $columns [ 'Type' ],  'varchar' ) ||  substr_count ( $columns [ 'Type' ],  'text' )){
          
    $i ++;
          if(
    $i  >=  $start  &&  $i  < ( $start  $stepping )){
            
    $sql  'ALTER TABLE ' . $tables [ 'Tables_in_' . $mysqldb ]. ' CHANGE ' . $columns [ 'Field' ]. ' ' . $columns [ 'Field' ]. ' ' . $columns [ 'Type' ]. ' CHARACTER SET ' . $character_set . ' COLLATE ' . $collation . ';' ;
            if(
    $tabletoskip  !=  $tables [ 'Tables_in_' . $mysqldb ]){
              
    mysql_query ( $sql );
              print(
    '&nbsp;&nbsp;&nbsp;&nbsp;' . $i . '. ' . $sql . "\r\n" );
            }else{
              print(
    '&nbsp;&nbsp;&nbsp;&nbsp;' . $i . '. <b>SKIPPED</b>: ' . $sql . "\r\n" );
            }
          }
        }
      }

    }
    print(
    '</pre>' );


      print(
    '<a href="' . $_SERVER [ 'PHP_SELF' ]. '?start=' .( $_GET [ 'start' ] +  1 ). '">Weiter...</a>' );

    ?>
    Wenn ja, wie soll ich das benutzen? Daten eintragen, raufladen un ausführen geht net.. da kommt das er keine seite gefunden hat
     
  4. 11. Juli 2009
    AW: Kollation aller Tabellen ändern

    Ja - hatte ich gemeint, hatte aber nochmal eins, finde ich aber im Moment leider nicht.

    Also bei mir hat das obrige Skript geklappt.
     
  5. 11. Juli 2009
    AW: Kollation aller Tabellen ändern

    Einfach so ausführen wie ich das gesacht hab oder irgendwas beachten?

    Hoe Jetzt gehts auf einmal... keine ahnung wieso...

    War wohl zufall...
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.