PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Postgresql Datenbank


yahho
2013-08-21, 16:33:03
Hallo,

ich weiß nicht ob das hier das richtige Unterforum ist aber vielleicht kann mir ja trotzdem jemand helfen. Ich habe eine Postgresql Datenbank als Unterbau für eine Portalsoftware. Mein Problem besteht darin das in der Software zwei Tabellen angelegt wurden die einen Umlaut enthielten. Natürlich können diese Tabellen nicht angesprochen werden aber sie wurden angelegt.

In PGAdmin sind die Tabellen da, aber ohne Namen, im DBVisualizer sind die Tabellen mit Namen vorhanden jedoch mit einem "?" in einer Raute, anstatt des Umlauts, in psql kann ich mir keine Tabellen anzeigen lassen wegen eines Kodierungsfehlers.

Meine Frage ist nun wie bekommen ich diese fehlerhaften Tabellen wieder raus? Drop table funktioniert nicht da der Name ja nicht korrekt erkannt wird/ eingegeben werden kann.

Anbei noch Systeminformationen:

Postgresql 9.2 auf Windows 8 x64

mfg nic

Ganon
2013-08-21, 17:33:19
Hmm, hast du die Datenbank nicht mit UTF8 angelegt? Weil zumindest bei mir unter Linux mit PGAdmin funktionieren Umlaute ohne Probleme. Mag aber vllt. an den Windows-Versionen liegen.

Ansonsten mal probiert die Tabelle in "" einzupacken? Also:
DROP TABLE "TabelleMitUmlaut"

pollux
2013-08-21, 17:39:56
Oder alle Tabellen sichern, anschließend alle Tabellen löschen und nur die gewünschten wieder einspielen.

yahho
2013-08-21, 19:06:06
@ganon

Ja ich habe die Datenbank mit UTF8 angelegt, das verwundert mich ja auch. Wenn ich eine psql Konsole öffne dann meldet diese das die Codetabelle 850 verwendet wird und diese nicht kompatible ist zur Windows Codetabelle (1250 denke ich). Ich kann mir nur vorstellen das die Portalsoftware oder Windows eine andere Codierung verwenden und bei der Übergabe irgendwas vertauscht wurde.

@ pollux

Das kann ich morgen auch mal testen, ich wollte sowieso versuchen die ganze Datenbank zu kopieren (create db mit template original db) in der Hoffung das die "defekten" Tabellen nicht kopiert werden können.

Ich hatte nur gedacht das es vielleicht eine Funktion gibt wie man die Datenbank auf Konsistenz prüfen kann und Fehler (bzw. Fehlerhafte Tabellen) einfach entfernen kann... habe mich bisher nicht so viel mit (Postgre)SQL beschäfftigt.

mfg nic

Marscel
2013-08-22, 00:01:36
Mein Problem besteht darin das in der Software zwei Tabellen angelegt wurden die einen Umlaut enthielten.

Was ist denn das für eine Spezialexperten-Software?

yahho
2013-08-22, 13:41:45
Das Ding nennt sich Intrexx, an sich eine sehr brauchbare Software und der Fehler liegt sicher nur bedingt dort. Ich denke mal das war ein Zusammentreffen verschiedener Codierungen (Postgre/UTF8 , Windows 1250 und was auch immer das Intrexx verwendet) das halt schief gegangen ist.

@pollux

Eine Sicherung ist nicht möglich, spuckt wieder Fehler. Das neu anlegen der Tabelle übernimmt die fehlerhaften Tabellen mit.

Gibt es keine Möglichkeit die Datenbank auf Konsistenz/Fehler überprüfen zu lassen und diese dann zu entfernen/korrigieren?

mfg nic

Ganon
2013-08-22, 13:51:27
Hast du das denn jetzt mit pgAdmin gemacht, oder mit pg_dumpall auf der Konsole?

Ich schätze nämlich, dass die Tabelle nur von den Clients nicht gelesen werden kann, aufgrund von Encoding unterschieden. Der Server wird damit wohl weniger ein Problem haben, die Tabelle heißt für ihn halt irgendwie.

Alternativ:

pg_dump -U username -E UTF-8 databasename > data.sql

Wenn das klappt, dann aus dem SQL-File die entsprechenden Tabellen entfernen und wieder importieren.

yahho
2013-08-22, 14:01:30
Du hast recht ich habe den Client verwendet. Ich werde das dann mal mit pg_dumb testen und melde mich nochmal. Danke schön.

mfg nic

Darkstar
2013-08-30, 22:27:24
Wenn ich eine psql Konsole öffne dann meldet diese das die Codetabelle 850 verwendet wird und diese nicht kompatible ist zur Windows Codetabelle (1250 denke ich). Ich kann mir nur vorstellen das die Portalsoftware oder Windows eine andere Codierung verwenden und bei der Übergabe irgendwas vertauscht wurde.Du kannst ja spaßeshalber mal im psql die Client-Kodierung (http://www.postgresql.org/docs/9.2/static/multibyte.html#MULTIBYTE-TRANSLATION-TABLE) ändern und schauen, ob Du dann dort auf die Tabellen zugreifen kannst:
SET CLIENT_ENCODING TO 'WIN1252';