Skip to content
Snippets Groups Projects
FAQ_german 48 KiB
Newer Older
Bruce Momjian's avatar
Bruce Momjian committed
    
   Möglicherweise ist der virtuelle Speicher verbraucht oder Dein Kernel
   hat eine niedrige Grenze für bestimmte Ressourcen. Versuche dieses,
   bevor Du den postmaster startest:

        ulimit -d 65536
        limit datasize 64m

   Je nach Deiner eingesetzten Shell mag nur einer dieser Befehle
   funktionieren. Aber es wird die Grenze des Datensegments für Prozesse
   erhöhen und vielleicht läuft so Dein Query durch. Dieser Befehl wirkt
   sich auf den aktuellen Prozess und alle seine Unterprozesse aus, die
   nach diesem Befehl gestartet werden. Falls Du ein Problem mit dem
   SQL-CLient hast, weil das Backend zu viele Daten zurückliefert,
   versuche diesen Befehl, bevor Du den SQL-Client startest.
   
    4.20) Wie kann ich feststellen, welche PostgreSQL-Version ich laufen habe?
    
   Gib in psql SELECT version(); ein
   
    4.21) Beim Arbeiten mit "large-object" kommt die Fehlermeldung: invalid
    large obj descriptor. Warum?
    
   Du solltest die Befehle BEGIN WORK und COMMIT bei jeden Gebrauch von
   Large Objects benutzen. Also um lo_open ... lo_close.
   
   Die Dokumentation hat schon immer darauf hingewiesen, daß lo_open in
   eine Transaktion eingebunden werden muß, aber die PostgreSQL Versionen
   vor 6.5 haben diese Regel nicht erzwungen. Statt dessen scheiterten
   sie gelegentlich, wenn Du diese Regel gebrochen hattest.
   
   Das aktuelle PostgreSQL erzwingt diese Regel, indem es die Handles der
   Large Objects beim COMMIT der Transaktion schließt, was sofort nach
   dem lo_open passiert, wenn Du nicht innerhalb einer Transaktion bist.
   So führt der erste Versuch, etwas mit dem Large Object zu machen zu
   einem invalid large obj descriptor. Also wird der Code, der bisher
   benutzt wurde, nun diese Fehlermeldung erzeugen, wenn Du keine
   Transaktionen benutzt hast.
   
   Falls Du eine Client-Schnittstelle wie ODBC benutzt, kann es sein, daß
   Du auto-commit off setzen mußt.
     _________________________________________________________________
   
                            PostgreSQL erweitern
                                      
    5.1) Ich habe eine benutzerdefinierte Funktion geschrieben. Wenn ich sie in
    psql aufrufe, kommt ein core dump. Warum?
    
   Dieses Problem kann viele Ursachen haben. Teste deine Funktion zuerst
   in einem Extra-Testprogramm. Stelle außerdem sicher, daß Deine
   Funktion nicht etwa elog-Nachrichten sendet, wenn der Client Daten
   erwartet, wie in den type_in() oder type_out() Funktionen
   
    5.2) Was bedeutet die Meldung: NOTICE:PortalHeapMemoryFree: 0x402251d0 not
    in alloc set!?
    
   Du pfreest etwas, das Du nicht palloct hast! Stelle sicher, daß Du
   nicht malloc/free und palloc/pfree durcheinanderwürfelst.
   
    5.3) Wie kann ich ein paar elegante neue Feldtypen und Funktionen zu
    PostgreSQL beitragen?
    
   Sende Deine Erweiterungen zur pgsql-hackers Mailing Liste, und sie
   werden eventuell im contrib/ Verzeichnis enden.
   
    5.4) Wie schreibe ich eine Funktion in C, die einen Tuple zurückliefert?
    
   Das erfordert derart extreme Genialität, daß die Autoren es niemals
   versucht haben, obwohl es im Prinzip zu machen wäre.
   
    5.5) Ich habe eine der Quellendateien geändert. Warum macht sich die
    Änderung beim erneuten Compilerlauf nicht bemerkbar?
    
   Die Makefiles finden nicht die richtigen Abhängigkeiten. Du mußt ein
   make clean und dann ein weiteres make machen.