dann versuche mal diese Variation:
Code: Alles auswählen
<?php
$db_host = 'db_hostname'; // Datenbankserver
$db_user = 'db_username'; // Datenbank Benutzer (Name)
$db_pass = 'db_passwort'; // Datenbank Passwort
$db_name = 'db_name'; // Name der Datenbank
$tables = array();
$tables_with_fields = array();
$link_id = mysql_connect($db_host, $db_user, $db_pass) or die('Datenbankverbindung fehlgeschlagen. Zugangsdaten prüfen.');
echo 'Verbunden' ."\n";
mysql_select_db($db_name, $link_id);
echo 'Ausgewählte Datenbank' ."\n";
echo 'Suche Tabellen:' ."\n";
$resource = mysql_query("SHOW TABLES", $link_id);
while ( $result = mysql_fetch_row($resource) )
{
$tables[] = $result[0];
echo ' - ' . $result[0] ."\n";
}
if ( !empty($tables) )
{
echo 'Starte Konvertierung' ."\n";
foreach ( (array) $tables as $table )
{
echo 'Bearbeite Tabelle "' . $table . '"';
$resource = mysql_query("EXPLAIN $table", $link_id);
while ( $result = mysql_fetch_assoc($resource) )
{
if ( preg_match('/(char)|(text)|(enum)|(set)/', $result['Type']) )
$tables_with_fields[$table][$result['Field']] = $result['Type'] . " " . ( "YES" == $result['Null'] ? "" : "NOT " ) . "NULL " . ( !is_null($result['Default']) ? "DEFAULT '". $result['Default'] ."'" : "" );
echo '.';
}
echo "\n";
}
echo 'Tabellen werden in Binär-Code gewandelt';
foreach ( (array) $tables as $table )
{
mysql_query("ALTER TABLE $table CONVERT TO CHARACTER SET binary", $link_id);
echo '.';
}
echo "\n";
// UTF-8 Converter
echo 'Konvertiere Tabellen nach UTF-8';
mysql_query("ALTER DATABASE " . $db_name . " CHARACTER SET utf8", $link_id);
foreach ( (array) $tables as $table )
{
mysql_query("ALTER TABLE $table CONVERT TO CHARACTER SET utf8", $link_id);
echo '.';
}
echo "\n";
echo 'Erstelle Original-Einträge mit neuem Zeichensatz';
foreach ( (array) $tables_with_fields as $table => $fields )
{
foreach ( (array) $fields as $field_type => $field_options )
{
mysql_query("ALTER TABLE $table MODIFY $field_type $field_options", $link_id);
}
echo '.';
}
echo "\n";
echo 'Optimiere Tabellen' . "\n";
foreach ( (array) $tables as $table )
mysql_query("OPTIMIZE TABLE $table", $link_id);
mysql_close($link_id);
echo 'DONE';
}
else
{
die('Keine Tabellen gefunden. Datenbank leer?');
}
?>
Die erse Version hat direkt latin Zeichen nach utf-8 Zeichen gewandelt.
LG
PS: Das Script habe ich hier gefunden und übersetzt.