Umlautprobleme beim Wechsel von MySQL4 zu MySQL5

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Umlautprobleme beim Wechsel von MySQL4 zu MySQL5

    Hey,

    ich habe jetzt schon etliche Stunden mit diesem Problem verbracht ...

    Wir haben unsern Server gewechselt und haben alle Db-Dumps des alten MySQL4 Servers in den neuen 5er eingespielt. Alter Server war Suse 10, neuer ist Ubuntu 8.04 (beide von Hosteurope).
    Bei der Mehrzahl der Datenbanken ging das geschmeidig, ohne irgendwo einen Zeichensatz anzugeben oder zu konvertieren.

    Bei zwei Seiten allerdings sind die Umlaute kaputt. Dabei handelt es sich um Tabellen, die mit latin1 arbeiten.

    Wenn ich einfach mysqldump --opt mache, ist es laut 'file -i' ein utf8 Dump. Nun habe ich es schon versucht, ihn mit 'iconv -f UTF-8 -t ISO-8859-15' zu konvertieren. Da kommt's aber zu einem: 'illegal input sequence at position 22999'.

    Dumpe ich mit --default-charset=latin1, so liefert mir ein 'file -i': 'text/plain; charset=unknown'. Spiele ich diesen Dump ein, bleiben die Umlaute weiterhin kaputt.

    In phpMyAdmin sehen beide Datenbanken (alter und neuer Server) von der Struktur her gleich aus (latin1). Nun habe ich schon folgenden Tipp aus der HE Faq versucht: http://faq.hosteurope.de/index.php?c...chword=umlaute

    Damit sind die kaputten Symbole von sonem Fragezeichen-Icon zu dem gewechselt, wie auf http://www.mcl2k.de/ zu sehen.

    Könnte das was damit zu tun haben, dass auf dem neuen Server noch keine locales installiert sind? Oder hat das mit MySQL nichts zu tun?

    Weiter reichen meine Kentnisse bzw Ideen nicht. Wie bekomme ich das ganze denn nun doch in den Griff?

    Dankeschön!

  • #2
    Wenn Datenbank identisch eingestellt ist, dann ist der Fehler bei PHP bzw. Apache zu finden. Hast du schon versucht auf jeder Seite einen header() abzusetzen und somit den char-set auf gewünschten Wert zu setzen, denn es hilft dir nicht viel per HTML zu steuern, da der Apache höchst wahrscheinlich mit UFT-8 als default konfiguriert wurde.

    Kommentar


    • #3
      Danke erstmal. Aber weiß nicht genau was du meinst.

      Wie in der HE Faq beschrieben habe ich den Apache schon auf

      AddDefaultCharset Off

      gesetzt.

      Kommentar


      • #4
        Was ich mich Frage, sind die Sonderzeichen bereits in der Datenbank kaputt oder erst bei der Ausgabe? Hast du das schon überprüft?

        Denn wenn sie schon in der Datenbank fehlerhaft sind, dann lag es am Ex- und Import. Wenn sie aber erst bei der Ausgabe nicht stimmen, dann liegt der Fehler im PHP- oder HTML-Code.

        Kommentar


        • #5
          Wenn ich mit phpMyAdmin reinschaue, siehts da genauso aus wie auf der Seite auch dargestellt.

          Und auch gleiches Ergebnis, wenn ich in der shell ein Query absetze. Es liegt also offenbar schon am Import...

          Kommentar


          • #6
            Du kannst beim Start von PMA den Char-Set festlegen. Hast du das gemacht? Wenn ja, liegt das wahrscheinlich am Import. Schau mal in der Dumpdatei nach, was für Collate bei varchar/char/text Felder steht. Und macht ein Export von der importierte DB und vergleiche mit dem alten Dump

            Kommentar


            • #7
              Meinst du z.B. das hier?

              PHP-Code:
              DROP TABLE IF EXISTS `accounts`;
              CREATE TABLE `accounts` (
                `
              idint(11NOT NULL auto_increment,
                `
              nickvarchar(255NOT NULL default '',
                `
              passvarchar(255NOT NULL default '',
                `
              codevarchar(20NOT NULL default '',
                `
              namevarchar(255NOT NULL default '',
                `
              addressvarchar(255NOT NULL default '',
                `
              plzvarchar(5NOT NULL default '0',
                `
              emailvarchar(255NOT NULL default '',
                `
              icqvarchar(255NOT NULL default '',
                `
              urlvarchar(255NOT NULL default '',
                `
              descriptiontext NOT NULL,
                `
              startseitevarchar(255NOT NULL default '',
                `
              statustinyint(4NOT NULL default '0',
                `
              clanint(11NOT NULL default '0',
                `
              anzahl_postsint(11NOT NULL default '0',
                `
              sigtext NOT NULL,
                `
              avatarint(11NOT NULL default '0',
                `
              achtzehntinyint(4NOT NULL default '0',
                `
              orgatinyint(4NOT NULL default '0',
                `
              liga_idvarchar(255NOT NULL default '',
                `
              datumvarchar(255NOT NULL default '',
                `
              last_loginvarchar(255NOT NULL default '',
                `
              newslettertinyint(1unsigned zerofill NOT NULL default '1',
                
              PRIMARY KEY  (`id`),
                
              KEY `id` (`id`),
                
              KEY `code` (`code`),
                
              KEY `newsletter` (`newsletter`)
              TYPE=MyISAM AUTO_INCREMENT=4747 
              Sehe da nichts dergleichen?
              Außerdem habe ich ja direkt in der shell gedumped und nicht über phpmyadmin - wobei ich das auch schon versucht habe - mit gleichem Ergebnis (und habe beim Import sowohl utf-8 und latin1 ausprobiert).

              Kommentar


              • #8
                Probier doch sowohl den Import als auch den Export über phpMyAdmin.

                Kommentar


                • #9
                  Habe ich schon. Kommt genau das gleiche bei raus.

                  Kommentar


                  • #10
                    Beide Varianten, utf-8 und latin1? Entsprechend auch den Zechensatz in phpMyAdmin eingestellt?
                    Einfach probieren. Eine Kombination klappt immer.

                    Kommentar


                    • #11
                      Wenn ich unter "Zeichensatz / Kollation der MySQL-Verbindung:" auf latin1 umstellen möchte, läd die Seite neu und es steht leider immer noch UTF8 drin.
                      Könnte der Grund hierfür sein, dass auf dem Server noch keine locales installiert sind?

                      Kommentar


                      • #12
                        Kein Plan Mt den Locales hat das meines Wissens aber nichts zu tun....

                        Kommentar


                        • #13
                          Könnte der Grund hierfür sein, dass auf dem Server noch keine locales installiert sind?
                          Die Zeichensätze sind eigentlich alle bei MySQL dabei.
                          Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                          Kommentar


                          • #14
                            SHOW VARIABLES LIKE 'char%'

                            auf dem alten und neuen mysql-server ausgeführt, was bekommst du?

                            Kommentar


                            • #15
                              Alter Server:

                              PHP-Code:
                              mysqlSHOW VARIABLES LIKE 'char%'
                                  
                              -> ;
                              +--------------------------+----------------------------+
                              Variable_name            Value                      |
                              +--------------------------+----------------------------+
                              character_set_client     latin1                     |
                              character_set_connection latin1                     |
                              character_set_database   latin1                     |
                              character_set_results    latin1                     |
                              character_set_server     latin1                     |
                              character_set_system     utf8                       |
                              character_sets_dir       | /usr/share/mysql/charsets/ |
                              +--------------------------+----------------------------+
                              7 rows in set (0.00 sec


                              Neuer Server:

                              PHP-Code:
                              mysqlSHOW VARIABLES LIKE 'char%';
                              +--------------------------+----------------------------+
                              Variable_name            Value                      |
                              +--------------------------+----------------------------+
                              character_set_client     latin1                     |
                              character_set_connection latin1                     |
                              character_set_database   latin1                     |
                              character_set_filesystem binary                     |
                              character_set_results    latin1                     |
                              character_set_server     latin1                     |
                              character_set_system     utf8                       |
                              character_sets_dir       | /usr/share/mysql/charsets/ |
                              +--------------------------+----------------------------+
                              8 rows in set (0.00 sec
                              ... was sagt mir das?

                              Und generell würde ich gern über die shell dumpen, denn nicht alle DBs bekomme ich mit phpMyAdmin wieder rein. Selbst wenn es mit phpMyAdmin gehen würde... es müsste doch einen analogen Befehl für die shell geben

                              Kommentar

                              Lädt...
                              X