phpMyAdmin und Umlaute, Problem

phpMyAdmin und Umlaute, Problem

am 29.12.2006 09:54:37 von thborsdorf

Hallo NG!

Ich weiß, phpMyAdmin ist hier nicht gerne gesehen, aber leider muss ich
es mangels Alternativen einsetzen.

Ich habe eine Tabelle welche ein varchar(35)-Feld enthält. In manchen
Datensätzen stehen in diesem Feld Umlaute. Bei einigen Datensätzen
werden die 35 Zeichen voll ausgeschöpft.

Exportiere ich jetzt diese Tabelle und importiere sie in meine lokale
Kopie bekomme ich folgenden Fehler angezeigt:

#1406 - Data too long for column 'xXx' at row ...

Beim Analysieren habe ich herausgefunden das dieser Fehler immer nur bei
Datensätzen auftritt, die in diesem Feld 35 Zeichen UND Umlaute stehen
haben. Durch die Konvertierung des Umlautes in (vermutlich) UTF8 werden
daraus zwei Zeichen, somit ist der Text dann 36 Zeichen lang, und die
Fehlermeldung erscheint.

Server: Linux, MySQL 4.1.10a-standard-log, phpMyAdmin 2.6.0-pl3
Lokal: WinXP SP2, MySQL 5.0.22-community-nt, phpMyAdmin 2.6.3-pl1

Hat jemand eine Idee wie ich das abstellen kann OHNE das Feld zu vergrößern?

MfG Thomas.

Re: phpMyAdmin und Umlaute, Problem

am 29.12.2006 10:13:17 von Johannes Vogel

Hi Thomas

Borsdorf, Thomas wrote:
> Ich habe eine Tabelle welche ein varchar(35)-Feld enthält. In manchen
> Datensätzen stehen in diesem Feld Umlaute. Bei einigen Datensätzen
> werden die 35 Zeichen voll ausgeschöpft.
> Exportiere ich jetzt diese Tabelle und importiere sie in meine lokale
> Kopie bekomme ich folgenden Fehler angezeigt:
> #1406 - Data too long for column 'xXx' at row ...
> Beim Analysieren habe ich herausgefunden das dieser Fehler immer nur bei
> Datensätzen auftritt, die in diesem Feld 35 Zeichen UND Umlaute stehen
> haben. Durch die Konvertierung des Umlautes in (vermutlich) UTF8 werden
> daraus zwei Zeichen, somit ist der Text dann 36 Zeichen lang, und die
> Fehlermeldung erscheint.
> Server: Linux, MySQL 4.1.10a-standard-log, phpMyAdmin 2.6.0-pl3
> Lokal: WinXP SP2, MySQL 5.0.22-community-nt, phpMyAdmin 2.6.3-pl1
> Hat jemand eine Idee wie ich das abstellen kann OHNE das Feld zu
> vergrößern?

Vergleiche mal `show create table ;` beider Systeme.

Johannes

Re: phpMyAdmin und Umlaute, Problem

am 29.12.2006 10:33:55 von thborsdorf

Johannes Vogel schrieb am 29.12.2006 10:13:
> Vergleiche mal `show create table ;` beider Systeme.

Exakt identisch!
Hätte mich auch gewundert, da beide mit demselben Skript erstellt sind.

> Johannes

MfG Thomas.

Re: phpMyAdmin und Umlaute, Problem

am 29.12.2006 11:04:56 von Johannes Vogel

Hi Thomas

Borsdorf, Thomas wrote:
> Johannes Vogel schrieb am 29.12.2006 10:13:
>> Vergleiche mal `show create table ;` beider Systeme.
> Exakt identisch!
> Hätte mich auch gewundert, da beide mit demselben Skript erstellt sind.

Welchen Character Set benutzt du? Und auf der Clientseite?

Chapter 10. Character Set Support
http://dev.mysql.com/doc/refman/5.0/en/charset.html

Problematisch mit phpmyadmin: Die Umwandlung ins falsche Charset kann
irgendwo passieren. Also beim dumpen der Original-DB, beim Speichern auf
der HDD des Original-Systems, beim Transfer zum Zeitsystem, beim
Speichern auf der HDD des Zweitsystems, beim Lesen des Browsers, bei der
Übertragung zum phpmyadmin, bei der Interpretation von phpmyadmin, bei
Einlesen in MySQL im Zweitsystem.

Wichtig ist jetzt, herauszufinden, wo das Problem entsteht. Geh dem
Transport entlang zurück und schaue genau hin, in welchen Zeichensätzen
das File gespeichert bzw. interpretiert wird.

Ich vermute mal, dass du beim dumpen nicht den richtigen Charset benutzt
und deshalb das File nicht im gewünschten Charset gespeichert wurde.

HTH, Johannes

Re: phpMyAdmin und Umlaute, Problem

am 29.12.2006 12:27:21 von thborsdorf

Johannes Vogel schrieb am 29.12.2006 11:04:
> Welchen Character Set benutzt du? Und auf der Clientseite?

Laut phpMyAdmin:
MySQL-Zeichensatz: UTF-8 Unicode (utf8)
Zeichensatz / Kollation der MySQL-Verbindung: utf8_general_ci
Kollation der Tabelle: latin1_german1_ci
Tabellen-Typ: InnoDB

Diese Einstellungen gelten für beide Systeme.

Beim Export habe ich keine Möglichkeit die Einstellungen für diesen
Export zu ändern, daher steht auch nix von "set names..." etc. in der
Datei. Diese speicherte ich mit der Option "Senden" direkt auf meinem
PC, was nicht heißen soll das phpMyAdmin keine lokale Kopie anlegt die
ich dann downloade. Jedenfalls stehen die Umlaute schon kodiert in der
Datei. Diese importiere ich dann bei mir. Dabei kann ich den CharSet
angeben, aber der Fehler tritt sowohl bei utf8 als auch bei latin1 und
cp1250 auf.

> Ich vermute mal, dass du beim dumpen nicht den richtigen Charset benutzt
> und deshalb das File nicht im gewünschten Charset gespeichert wurde.

Ich vermute mal, da der Zeichensatz von MySQL utf8 ist wird auch in utf8
exportiert, denn das kann ich beim Export ja nicht beeinflussen. Und
wenn ich dann bei mir utf8 importiere dürfte das eigentlich keine
Probleme machen, zumindest nach meinem Verständnis nicht.

> HTH, Johannes

MfG Thomas.