php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 15-06-2008, 12:53
jessix
 Newbie
Links : Onlinestatus : jessix ist offline
Registriert seit: Dec 2003
Beiträge: 21
jessix ist zur Zeit noch ein unbeschriebenes Blatt
jessix eine Nachricht über ICQ schicken
Standard 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!
Mit Zitat antworten
  #2 (permalink)  
Alt 15-06-2008, 13:11
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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.
Mit Zitat antworten
  #3 (permalink)  
Alt 15-06-2008, 13:13
jessix
 Newbie
Links : Onlinestatus : jessix ist offline
Registriert seit: Dec 2003
Beiträge: 21
jessix ist zur Zeit noch ein unbeschriebenes Blatt
jessix eine Nachricht über ICQ schicken
Standard

Danke erstmal. Aber weiß nicht genau was du meinst.

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

AddDefaultCharset Off

gesetzt.
Mit Zitat antworten
  #4 (permalink)  
Alt 15-06-2008, 13:17
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

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.
Mit Zitat antworten
  #5 (permalink)  
Alt 15-06-2008, 13:31
jessix
 Newbie
Links : Onlinestatus : jessix ist offline
Registriert seit: Dec 2003
Beiträge: 21
jessix ist zur Zeit noch ein unbeschriebenes Blatt
jessix eine Nachricht über ICQ schicken
Standard

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...
Mit Zitat antworten
  #6 (permalink)  
Alt 15-06-2008, 13:45
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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
Mit Zitat antworten
  #7 (permalink)  
Alt 15-06-2008, 13:57
jessix
 Newbie
Links : Onlinestatus : jessix ist offline
Registriert seit: Dec 2003
Beiträge: 21
jessix ist zur Zeit noch ein unbeschriebenes Blatt
jessix eine Nachricht über ICQ schicken
Standard

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).
Mit Zitat antworten
  #8 (permalink)  
Alt 15-06-2008, 14:20
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

Probier doch sowohl den Import als auch den Export über phpMyAdmin.
Mit Zitat antworten
  #9 (permalink)  
Alt 15-06-2008, 14:23
jessix
 Newbie
Links : Onlinestatus : jessix ist offline
Registriert seit: Dec 2003
Beiträge: 21
jessix ist zur Zeit noch ein unbeschriebenes Blatt
jessix eine Nachricht über ICQ schicken
Standard

Habe ich schon. Kommt genau das gleiche bei raus.
Mit Zitat antworten
  #10 (permalink)  
Alt 15-06-2008, 14:27
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

Beide Varianten, utf-8 und latin1? Entsprechend auch den Zechensatz in phpMyAdmin eingestellt?
Einfach probieren. Eine Kombination klappt immer.
Mit Zitat antworten
  #11 (permalink)  
Alt 15-06-2008, 14:30
jessix
 Newbie
Links : Onlinestatus : jessix ist offline
Registriert seit: Dec 2003
Beiträge: 21
jessix ist zur Zeit noch ein unbeschriebenes Blatt
jessix eine Nachricht über ICQ schicken
Standard

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?
Mit Zitat antworten
  #12 (permalink)  
Alt 15-06-2008, 14:54
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

Kein Plan Mt den Locales hat das meines Wissens aber nichts zu tun....
Mit Zitat antworten
  #13 (permalink)  
Alt 15-06-2008, 16:49
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
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 | []
Mit Zitat antworten
  #14 (permalink)  
Alt 15-06-2008, 18:05
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

SHOW VARIABLES LIKE 'char%'

auf dem alten und neuen mysql-server ausgeführt, was bekommst du?
Mit Zitat antworten
  #15 (permalink)  
Alt 15-06-2008, 19:03
jessix
 Newbie
Links : Onlinestatus : jessix ist offline
Registriert seit: Dec 2003
Beiträge: 21
jessix ist zur Zeit noch ein unbeschriebenes Blatt
jessix eine Nachricht über ICQ schicken
Standard

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
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:59 Uhr.