ubuntuusers.de

Encoding umstellen bei PostgreSQL 8.7

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

widharcal

Anmeldungsdatum:
30. Oktober 2007

Beiträge: 8

Hallo,

ich habe PostgreSQL 8.7.1 auf Ubuntu 8.10 amd64 installiert. Dabei habe ich festgestellt, das ich nur UTF8 für das Encoding einstellen kann. Soweit nicht schlimm habe ich gedacht. Wenn ich jetzt versuche eine Datenbank an zu legen, die nicht UTF8 hat, wird diese mit der Fehlermeldung, dass diese Encoding nicht die locale wäre, nicht angelegt. Jetzt wollte ich eine bestehende DB von Windows auf Linux importieren, dies geht dadurch leider nicht. Den wenn ich die DB in UTF8 anlege und die Daten von einem Backup wiederherstelle, dann fehlen zum Teil Tabellen und die Tabellen sind ohne jegliche Datensätze.

Jetzt zu meiner Frage: Gibt es eine Möglichkeit, dass ich auch wieder andere Encodingtypen nutzen kann? Bei PostgreSQL 8.7.1 für Windows, kann ich auch ohne Probleme, wen als Local Encoding Win1252 eingestellt ist, ein UTF8 als Encoding einstellen. Leider funktioniert das Umgekehrt, also mit Local Encoding UTF8 auf Win1252 oder irgend einem andern Encodingtyp nicht.

Vielen Dank euch im Voraus.

comm_a_nder

Avatar von comm_a_nder

Anmeldungsdatum:
5. Februar 2006

Beiträge: 2533

Wohnort: Dresden

Hallo Reisender aus der Zukunft. Hier in der Gegenwart gibt es nur PostgresQL 8.3 (die 8.4 ist gerade erst als Beta erschienen).

Kannst Du bitte genaue benutzte Befehle und Fehlermeldungen bringen, damit wir unnötiges Raten verhindern können?

widharcal

(Themenstarter)

Anmeldungsdatum:
30. Oktober 2007

Beiträge: 8

Hi,

Ups... hab grad nochmal nachgsehen stimmt. Meinte PgSQL 8.3.7. Weiß der Geier warum ich 8.7 im Kopf hatte. Sry.

Also die Fehlermeldung ist:

"ERROR: encoding WIN1252 does not match server's locale de_DE.utf8 DETAIL: The server's LC_CTYPE setting requires encoding UTF8."

Habs aber jetzt so gemacht, dass ich in Windows eine Batch geschrieben habe, die ein Backup direkt in UTF8 ausgibt. Diese dann in die UTF8 DB eingespielt. Scheint bisher ohne Probleme zu funktionieren. Mich wundert es halt dennoch das Linux anscheinend kein anderes Encoding wie UTF8 zulässt. Habe auch nichts gefunden wie man das Umstellen kann. Es ist halt verwirrend, weil sämtliche Encodingtypen dennoch als Möglichkeit in der Auswahl angegeben werden, obwohl sie anscheinend nicht genutzt werden können.

Ich lass es mal noch als Ungelöst stehen, falls jemand noch eine generelle Idee haben sollte.

comm_a_nder

Avatar von comm_a_nder

Anmeldungsdatum:
5. Februar 2006

Beiträge: 2533

Wohnort: Dresden

Wie hast Du denn die Datenbank erstellt, vor allem mit welcehm Encoding?

widharcal

(Themenstarter)

Anmeldungsdatum:
30. Oktober 2007

Beiträge: 8

Also die Ursprungs-DB ist über den PgAdminIII auf Windows und mit dem Encoding Win1252 erstellt worden.

Die Installation von PgSQL 8.3 auf Ubuntu ist über eine .bin gelaufen. Bei dieser Hatte ich in der Installationsauswahl nur UTF8 Varianten. Da habe ich dan de_DE.UTF8 ausgewählt gehabt. Daher "locale de_DE.utf8". Die Datenbank an sich in Ubuntu habe ich dann wieder mit PgAdminIII erstellen wollen. Auch wieder mit Win1252 wobei dann bereits genannte Meldung kommt. Wenn ich UTF8 als Encoding angebe, dann erstellt PgAdminIII die DB -logischerweise-.

comm_a_nder

Avatar von comm_a_nder

Anmeldungsdatum:
5. Februar 2006

Beiträge: 2533

Wohnort: Dresden

Wichtig ist halt, das der SQL-Dump in dem Encoding vorliegt, was auch der Client (psql oder pg_restore oder PgAdmin3 etc) nutzt. Das Encoding der PostgreSQL-Installation ist dabei sekundär, auch das Encoding der darauf angelegten DB. Das verhandeln Client und Server dann unter sich aus, aber wenn Du versuchst, mit einem UTF-8 Client ein WIN-1252 Dump einzuspielen, ohne das dem Client mitzuteilen ... dann kann das nur schief gehen. Aber das hat Du ja (in dem Fall eher zufälligerweise) schon richtig gemacht.

Antworten |