Probleme mit Encoding bei Datenbank neu anlegen

  • Hallo zusammen,

    wir nutzen Taxpool mit einer separaten Postgresql Datenbank. Seit geraumer Zeit können wir keine neuen Datenbanken anlegen.
    Es scheint etwas mit dem Encoding zu tun haben. Wenn ich versuche eine DB mit dem Namen test zu erstellen bekomme ich folgende Fehlermeldung:

    "C:\Program Files (x86)\Taxpool-Buchhalter Bilanz\bin\config.txt" steht u.a. utf8=1

    Zusätzlich habe ich in den "%appdata%\postgresql\psqlrc.conf" folgenden Eintrag hinzugefügt:

    \encoding UTF8

    In der Hoffnung, dass pg_restore ("C:\Program Files (x86)\Taxpool-Buchhalter Bilanz\bin\tools64\pgsql\bin\pg_restore.exe") diese Konfiguration verwendet.

    Leider war es alles nicht erfolgreich. Die Verbindung zum Server kann zwar aufgebaut werden, ich komme aber nicht weiter als die Fehlermeldung.
    Der Postgresql Cluster verwendet UTF8 für die Datenbanken.
    Könnt Ihr mir einen Tipp geben?

    Am Anfang hat alles funktioniert, vielleicht liegts auch an Windows 11. Ich habe auch die Beta Version für globales UTF8 von Windows probiert, leider startet Taxpool dann gar nicht, da es diese Funktion nicht unterstützt.

    Viele Grüße
    Alex

  • Hallo,

    die Antwort vom Email-Support ist nachfolgend, aber bitte das Problem hier weiterverarbeiten:

    Nach genauer Analyse können wir Folgendes klarstellen:

    • Der von Ihnen gemeldete Fehler liegt nicht an einem falschen Encoding der PostgreSQL-Datenbank oder des Clusters.
    • Die Datenbank wird im Ablauf grundsätzlich korrekt angesprochen; der von Ihnen gesehene Text mit Sonderzeichen (z. B. „Ã…“, „Ä“) ist ausschließlich ein Darstellungsproblem der Fehlermeldung. Die zugrunde liegende Fehlermeldung selbst ist korrekt, wird aktuell jedoch nicht optimal angezeigt.

    Zur Einordnung der angesprochenen Punkte:

    1) config.txt / utf8=1 Der Eintrag utf8=1 in der Datei C:\Program Files (x86)\Taxpool-Buchhalter Bilanz\bin\config.txt betrifft ausschließlich das Encoding der Taxpool-Konfigurationsdatei. Er hat keinen Einfluss auf PostgreSQL, das Datenbank-Encoding oder den Restore-Vorgang.

    2) %appdata%\postgresql\psqlrc.conf / \encoding UTF8 Diese Einstellung wirkt nur auf interaktive psql-Sitzungen. Sie wird von den durch Taxpool verwendeten Tools (z. B. pg_restore) in diesem Zusammenhang nicht ausgewertet und ist für das beschriebene Verhalten nicht ursächlich.

    3) Sonderzeichen im Datenbanknamen Der von Ihnen verwendete Datenbankname mit Umlauten stammt sehr wahrscheinlich aus einer älteren Taxpool-Version. In neueren Versionen lassen wir solche Sonderzeichen bei der Neuanlage von Datenbanken bewusst nicht mehr zu, um genau solche Randfälle zu vermeiden.

    4) Weiteres Vorgehen Wir werden in einer kommenden Programmversion:

    • die Anzeige von Fehlermeldungen technisch verbessern (korrekte UTF-8-Darstellung),
    • und die internen Meldungen beim Anlegen bzw. Wiederherstellen von Datenbanken präzisieren, sodass die Ursache künftig eindeutig erkennbar ist.

    Sobald diese Version bereitsteht, melden wir uns bei Ihnen und bitten Sie, den Vorgang damit erneut zu testen.

    Vielen Dank für Ihre Unterstützung und Ihre Geduld.

    Die Beträge des Autors dienen ausschließlich dem Zweck der Information oder Meinungsäußerung und stellen keine rechtliche oder andersweitige Beratung oder Zusicherung dar.

    Änderungen und Irrtümer sind vorbehalten.

  • Hallo,

    vielen Dank für die Antwort und das ausführliche Eingehen auf die einzelnen Punkte.

    Leider ist mir nicht ganz klar wie ich das Problem lösen kann.

    Mein Datenbankname enthält keine Umlaute, die Kurzfassung des Problems ist, dass ich gar keine neuen Datenbanken erstellen kann, egal wie ich diese benne.
    Ich versuche eine neue Datenbank anzulegen mit dem Namen "test" zu erstellen und Taxpool gibt mir im Erstellvorgang der Datenbank die oben gezeigten Fehlermeldung.

    In meinem Verständniss passiert folgendes:

    Ich möchte eine neue Datenbank anlegen mit Namen "test"
    PGSQL erstellt db "test"
    pgrestore wird durch taxpool aufgerufen doch aufgrund des encodings versucht pgrestore nicht "test" aufzurufen sondern Â"TestÂ" und das schlägt fehl, da es ja die Datenbank nicht gibt.

    P.S. Bzw. wenn das nicht der Fehler ist, wie kann ich den Fehler finden? Welche Logs könnte ich ansehen / zusenden, damit wir dem Fehler finden. Neue Datenbanken anlegen, wäre ziemlich praktisch :).

    Viele Grüße
    Alex

    Edited once, last by TaxUser (December 29, 2025 at 12:32 PM).

  • Der Datenbankname test selbst ist korrekt (reines ASCII). Die scheinbaren Sonderzeichen stammen nicht aus dem Namen, sondern aus der Fehlermeldung: pg_restore gibt Unicode-Anführungszeichen aus, die aktuell nur falsch dargestellt werden. Es handelt sich um einen reinen Anzeigeeffekt, nicht um ein echtes Namens- oder Encoding-Problem.


    Bitte beantworte die folgenden Punkte, damit wir das Problem gezielt eingrenzen können:

    1. Wurde der PostgreSQL-Cluster mit Taxpool erstellt? Falls nein: Bitte poste den genauen initdb-Aufruf, mit dem der Cluster erstellt wurde. Passwort bitte vorher durch 123456 ersetzen und keine echten Zugangsdaten im Forum posten.
    2. Laufen PostgreSQL-Server und Taxpool auf demselben Rechner? Oder greift Taxpool auf einen PostgreSQL-Server auf einem anderen Rechner (z. B. Server / VM / NAS) zu?
    3. PostgreSQL-Logdatei prüfen Bitte schau in die PostgreSQL-Logdatei zum Zeitpunkt des Fehlversuchs. Diese befindet sich in der Regel im Cluster-Verzeichnis, z. B.:
    Code
    C:\Program Files\PostgreSQL\<Version>\data\log\

    oder im benutzerdefinierten Datenverzeichnis unter data\log.

    Bitte nicht die komplette Logdatei posten. Falls dort Passwörter, Pfade oder andere sensible Daten enthalten sind, diese bitte vorher unkenntlich machen. Relevant sind nur die ERROR- oder FATAL-Meldungen rund um den Zeitpunkt, an dem das Anlegen der Datenbank fehlschlägt.

    1. LC_COLLATE / LC_CTYPE ausgeben Bitte das Ergebnis posten.
    2. Existiert die Datenbank nach dem Fehlversuch? Bitte nach dem fehlgeschlagenen Anlegen in der PostgreSQL-Konsole prüfen, ob die Datenbank noch existiert. Dazu in der SQL Shell (psql) (s) diesen Befehl eingeben (siehe weiter unten unter PostgreSQL-Konsole starten:(
    Code
    \l

    oder alternativ:

    SQL
    SELECT datname FROM pg_database ORDER BY datname;

    Bitte posten, ob und wie die Datenbank (z. B. test) danach in der Liste erscheint:

    • existiert nicht
    • existiert leer
    • existiert teilweise
    1. PostgreSQL-Version Welche PostgreSQL-Version ist im Einsatz? (z. B. 13.17, 14.x, 15.x)

    So prüfst du LC_COLLATE und LC_CTYPE (einfach & sicher)

    Schritt 1: PostgreSQL-Konsole starten

    Hinweis zur PostgreSQL-Konsole (psql)

    Das hängt davon ab, wie PostgreSQL installiert wurde:

    Fall 1: Normale Installation (nicht portabel)

    Wenn PostgreSQL „normal“ installiert wurde (Standard-Installer):

    • Im Startmenü gibt es „SQL Shell (psql)”
    • Das reicht völlig, kein Pfad nötig
    • Einfach starten → ENTER drücken → fertig

    Empfohlen, wenn vorhanden.


    Fall 2: Portable Installation / kein Startmenü-Eintrag

    Wenn PostgreSQL portabel installiert wurde oder kein Startmenü-Eintrag existiert:

    Dann gibt es zwei Möglichkeiten:

    Variante A (einfach):

    1. Eingabeaufforderung öffnen
    2. In den PostgreSQL-bin-Ordner wechseln, z. B.:
    Code
    cd C:\PostgreSQL\bin
    1. Dann starten mit:
    Code
    psql

    Variante B (direkt, ohne cd): Den vollen Pfad angeben, z. B.:

    Code
    "C:\PostgreSQL\bin\psql.exe"

    Danach wie gewohnt mit ENTER bestätigen.


    Wichtig

    • Wenn psql ohne Pfad erkannt wird → ist alles korrekt eingerichtet
    • Wenn Windows meldet „Befehl nicht gefunden“ → dann vollen Pfad verwenden
    • Es ist egal, welche Variante genutzt wird – das Ergebnis ist identisch

    Schritt 2: Fragen einfach bestätigen

    Drücke bei allen Fragen einfach ENTER, bis du eine Eingabeaufforderung siehst, die etwa so aussieht:

    Code
    postgres=#

    Schritt 3: Befehle eingeben

    Gib diese beiden Befehle nacheinander ein und bestätige jeweils mit ENTER:

    Code
    SHOW lc_collate;
    SHOW lc_ctype;

    Schritt 4: Ergebnis posten

    Das Ergebnis sieht z. B. so aus:

    Code
    lc_collate
    -----------
    German_Germany.1252
    
    lc_ctype
    -----------
    German_Germany.1252

    oder einfach:

    Code
    C

    Bitte den kompletten Text kopieren und hier posten.


    Optional (wenn du willst)

    Wenn mehrere Datenbanken existieren, ist auch das hilfreich:

    SQL
    SELECT datname, datcollate, datctype FROM pg_database;

    Wichtig

    • Mit diesen Befehlen kannst du nichts kaputt machen
    • Es werden keine Daten verändert
    • Es wird nur angezeigt, wie PostgreSQL aktuell konfiguriert ist

    Kurz erklärt

    • UTF-8 = wie Zeichen gespeichert werden (bei dir korrekt)
    • LC_COLLATE / LC_CTYPE = wie Text verglichen/sortiert wird → hier gibt es unter Windows 11 häufiger Stolpersteine

    Sobald wir die Werte sehen, wissen wir ziemlich genau, wo es hakt und wie man es sauber behebt.

    Die Beträge des Autors dienen ausschließlich dem Zweck der Information oder Meinungsäußerung und stellen keine rechtliche oder andersweitige Beratung oder Zusicherung dar.

    Änderungen und Irrtümer sind vorbehalten.

  • Fehler gefunden :!:

    Das postgresql Cluster läuft auf einem separaten ubuntu server. Nach einem größeren Update von ubuntu und dem postges Cluster ist das update der Sortierfolgenversion nicht korrekt durchgegangen. Hier gab es in unserem Skript einen Fehler.

    Nachdem ich per Hand die Sortierfolgenversion upgedatet habe und die Tabellen neu indexiert habe (insbesonder auch template1, da dies das Template für neue DBs darstellt), lief alles.

    Jetzt können wir wieder neue Datenbanken erstellen.

    Vielen Dank für die Unterstützung und ich wünsche einen guten Rutsch ins Jahr 2026 :).

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!