sql >> Databáze >  >> RDS >> PostgreSQL

chyba s postgresql datababse :Běží server lokálně a přijímá připojení na soketu domény Unix /var/run/postgresql/.s.PGSQL.5432?

Konvence pro PostgreSQL zabalený pro Debian nebo deriváty Debianu, jako je Ubuntu, je použití /var/run/postgresql jako adresář pro sokety domény Unix. Na druhou stranu konvence pro samostatně zkompilované klientské knihovny postgres je použití /tmp , pokud není samostatně nakonfigurováno jinak.

Obvyklou hlavní příčinou tohoto nesouladu mezi oběma je tedy kombinace samostatně zkompilovaných věcí na straně klienta s předkompilovanými balíčky na straně serveru (i když jsou klient a server nainstalovány na stejném počítači, na straně klienta a na straně serveru jsou stále zřetelné a mohou být nesynchronizované).

Soft-linking z /tmp do tohoto adresáře, jak navrhuje tazatel, funguje kromě toho, že se odkaz ztratí při každém restartu, protože obecně /tmp se při restartu vyprázdní.

Lepší možností by bylo přidat jako položku v database.yml :

  • buď host: /tmp pokud je skutečná cesta soketu /tmp (samokompilovaný server, zabalený klient)

  • nebo host: /var/run/postgresql pokud je skutečná cesta soketu /var/run/postgresql/ (balený server, samostatně zkompilovaný klient).

Když hodnota v poli hostitele začíná lomítkem, knihovna postgres ví, že se jedná o umístění adresáře pro místní sokety, nikoli o název hostitele. Název souboru v adresáři .s.PGSQL.portnumber je generován a nesmí být specifikován, pouze adresář.

Další možností je nakonfigurovat samostatně zkompilované softwarové balíčky co nejblíže Debianu a přepsat výchozí hodnoty, jak to dělají.



  1. Mysql select * from nevrací všechny řádky

  2. PIVOT v sql 2005

  3. Importujte více souborů CSV do mysql

  4. Query funguje na Oracle 11g, ale selže na Oracle 8i