Seite 5 von 7

Re: Konvertierung von 2 nach 3 - schlägt fehl

Verfasst: 02.06.2014 01:22
von HabNurNeFrage
Hi,

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?');
}

?>
Könnte etwas länger dauern, da hier mehrmals gewandelt wird. (latin nach binär => binär latin nach binär utf-8 => binär utf-8 nach utf-8)
Die erse Version hat direkt latin Zeichen nach utf-8 Zeichen gewandelt.

LG

PS: Das Script habe ich hier gefunden und übersetzt.

Re: Konvertierung von 2 nach 3 - schlägt fehl

Verfasst: 02.06.2014 08:29
von maiurb
LG

PS: Das Script habe ich hier gefunden und übersetzt.
Hi, vielen Dank erst mal. Ich werde es ausprobieren.
Mein altes 2.er Board läuft ja sauber mit Latina1. Warum kann man das neue Board nicht auch so laufen lassen?

VG Maik

Re: Konvertierung von 2 nach 3 - schlägt fehl

Verfasst: 02.06.2014 09:04
von Crizzo
Es geht nicht. UTF8 ist Stand der Technik. Finde dich damit ab.

Re: Konvertierung von 2 nach 3 - schlägt fehl

Verfasst: 02.06.2014 11:20
von Miriam
Hinweis: Setze Latina1 = latin1

Re: Konvertierung von 2 nach 3 - schlägt fehl

Verfasst: 02.06.2014 23:17
von maiurb
Hi, leider hat auch dieses Script bei mir nicht den gewünschten Erfolg gebracht.

VG

Re: Konvertierung von 2 nach 3 - schlägt fehl

Verfasst: 02.06.2014 23:24
von Miriam
Mache doch einfach mal einen Dump der aktuellen DB und öffne den mit Notenpad++ und wähle dann aus den Menü > konvertiere zu UTF8. Speichere den nunmehr konvertierten Dump ab und spiele ihn mittels MySQLDumper in die neue DB ein.

Re: Konvertierung von 2 nach 3 - schlägt fehl

Verfasst: 03.06.2014 00:08
von maiurb
Miriam hat geschrieben:Mache doch einfach mal einen Dump der aktuellen DB und öffne den mit Notenpad++ und wähle dann aus den Menü > konvertiere zu UTF8. Speichere den nunmehr konvertierten Dump ab und spiele ihn mittels MySQLDumper in die neue DB ein.
Leider auch fehlgeschlagen! Im NP++ war schon der richtige Zeichensatz angehakt UTF8 - ohne BOM.
In jedem Table ist "ENGINE=...CHARSET=latin1;" hinterlegt. Müsste da jetzt nicht UTF-8 stehen?

VG

Re: Konvertierung von 2 nach 3 - schlägt fehl

Verfasst: 03.06.2014 07:58
von Miriam
Ja.
Suche und ersetze es mit Notepad++.

Re: Konvertierung von 2 nach 3 - schlägt fehl

Verfasst: 03.06.2014 22:17
von maiurb
Hi, jetzt steht überall CHARSET=utf8, aber es funktioniert leider immer noch nicht!
Habe es jetzt so gelöst, dass ich mit dem Editor alle fehlerhaften Zeichen durch Umlaute Ä,Ö,Ü ersetzt habe.

Ich bräuchte noch 2 Dinge:

1. möchte ich auf meiner Startseite die letzten 5 Kommentare anzeigen lassen. (includiert, Script-last.php?)
2. gibt es die Möglichkeit die einzelnen Foren zusammengeklappt anzeigen zu lassen, ohne die Unterforen zB. http://www.boulderrausch.de/datenbank/index.php?c=9?

VG Maik

Re: Konvertierung von 2 nach 3 - schlägt fehl

Verfasst: 04.06.2014 18:18
von Kirk
Hallo
Zu 2.
Wenn du die Unteforen in der Forenübersicht nicht angezeigt bekommen willst, kannst du dies im ACP regeln.
Klicke im ACP/Foren rechts neben den gewünschten Foren auf das grüne Zahnrädchen und stelle bei Unterforen in Legende aufführen auf nein.