Illegal mix of collations - Konverter til UTF8

Fejlen "Illegal mix of collations" opstår når din tabellerne i din database benytter forskellige tegnsæt. Her viser vi hvordan du konverterer alle tabeller til UTF8.

  • Gem nedenstående script i en tom fil, f.eks. convert.php og upload til dit webhotel. Udskift BRUGERNAVN, KODEORD og DATABASE (evt. også localhost) med de korrekte værdier for dit webhotel:
 <?php
    // Configuration Section
    $server = 'localhost'; //For det meste localhost, ændre hvis påkrævet
    $username = 'BRUGERNAVN'; // Udskift med dit database brugernavn
    $password = 'KODEORD'; // Udskift med dit database kodeord
    $database = 'DATABASE'; // Udskift med navnet på din database
    $new_charset = 'utf8'; // Det tegnsæt der skal konverteres til - her anbefales utf8
    $new_collation = 'utf8_general_ci'; // Den ønskede sortering - her anbefales utf8_general_ci ?
    
    // Connect to database
    $db = mysql_connect($server, $username, $password); if(!$db) die("Cannot connect to database server -".mysql_error());
    $select_db = mysql_select_db($database); if (!$select_db) die("could not select $database: ".mysql_error());
    
    // change database collation
    mysql_query("ALTER DATABASE $database DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci");
    
    // Loop through all tables changing collation
    $result=mysql_query('show tables');
    while($tables = mysql_fetch_array($result)) {
        $table = $tables[0];
        mysql_query("ALTER TABLE $table DEFAULT CHARACTER SET $new_charset COLLATE $new_collation");
        
        // loop through each column changing collation
        $columns = mysql_query("SHOW FULL COLUMNS FROM $table where collation is not null");
        while($cols = mysql_fetch_array($columns)) {
            $column = $cols[0];
            $type = $cols[1];
            mysql_query("ALTER TABLE $table MODIFY $column $type CHARACTER SET $new_charset COLLATE $new_collation");
        }
        
        print "changed collation of $table to $new_collation<br/>";
    }
    print '<br/>The collation of your database has been successfully changed!<br/>';
?>
  • Åbn en browser og tilgå scriptet ved at gå ind på www.din-butik.dk/convert.dk (www.din-butik.dk, udskifter du med adressen til din shop).
     
  • Afvent af scriptet kører igennem, det kan sagtens tage 10-15 min. alt efter størrelsen på databasen.

Kilde: holisticsystems.co.uk

mortenjakobsens billede

Certificeret Magento udvikler og CTO i Improving, der arbejder med e-handelsløsninger I Magento -