ich muss zugeben, dass mich bisher Zeichensätze recht wenig interessiert
haben.
Ich habe meine Daten per PHP in der DB gespeichert und wenn ich Selbige wieder gelesen habe,
sind sie auch korrekt wieder rausgekommen. Soweit so gut.
Im Rahmen meines aktuellen Projektes "Erhöhung der Performance meiner DB-Update-Routine"
kommen da so Statements wie z.B.:
Code: Alles auswählen
UPDATE POSTEN SET KLEIN = LOWER (BEZEICHNUNG1 || " " || BEZEICHNUNG2);
In den meisten Tabelle funktioniert das auch wunderbar, aber das obige Beispiel fliegt mir
mit folgender Fehler-Meldung um die Ohren:
Nach einiger Recherche meine ich nun den Grund dafür gefunden zu haben. Das Grund-Gerüst meiner DB habe ich mal aus einem Projekt eines Ex-Freundes übernommen und der hat wohl, warum auch immer, als Basis-CharSet für die DB WIN1251 (Kyrillisch) definiert. (Vielleicht, weil er einen griechischen Migrations-Hintergrund hat.)SQLSTATE[HY000]: General error: -802 arithmetic exception, numeric overflow, or string truncation Cannot transliterate character between character set
Die meinsten Domains für String-Variablen sind jedoch explizit mit CharSet WIN1252 (Westeuropäisch) definiert.
Einige wenige Domains aber nicht, weshalb sie den DB-CharSet WIN1251 übernommen haben.
Fakt ist aber, dass in diesen Feldern / Spalten Daten mit den deutschen Sonder-Zeichen "ä ö ü ß" und auch mit €-Symbol gespeichert sind, also im WIN1252 Charset.
Nun meine Frage:
Wie schaffe ich diesen Murks am schellsten, einfachsten und besten aus der Welt ?
a. Kann ich den Basis-Char-Set der DB nachträglich einfach auf WIN1252 ändern, ohne das es nachteilige Auswirkungen auf die Bestands-Daten hat ?
b. Übernehmen dann die Domains ohne explizite CharSet-Definition automatisch den neuen Basis-CharSet der DB, ohne das es nachteilige Auswirkungen auf die Bestands-Daten hat ?
c. Wenn a. und/oder b. = nein, wie gehe ich dann am klügsten vor, ohne die Bestands-Daten zu gefährden ?
d. Oder anders gefragt: Muss ich zwingend neue Databanken erstellen und manell die Daten von der alten in die neue "pumpen" ?
Danke und viele Grüße
Hamburgo