[>a2427.html>] [<a2425.html<] [^a2.html^]


Capitolo 337.   Applicazioni base di dati (database)

337.1   Differenze tra db e dbms

Che differenza c'è tra db e dbms?

---------

Un db è un data base, un archivio cioè un insieme di dati. Chi li gestisce? li gestisce il dbms (Data Base Management System)

337.2   Compilazione php e postgres

ho il seguente problema: quando compilo php con il supporto a postgres (./configure --with-pgsql; make), la compilazione si interrompe con il seguente esito:

/usr/src/packages/SOURCES/php-3.0.12 # make

[...]

functions/php3_pgsql.h:46: libpq-fe.h: No such file or directory
functions/php3_pgsql.h:47: libpq/libpq-fs.h: No such file or directory

[...]

make: *** [internal_functions.o] Error 1

Perché non ci sono quei libpq? È un pacchetto che devo aggiungere? Dove lo trovo?

---------

Nel postgres-devel.

337.3   Problema postgresql + php3

Ho una Debian GNU/Linux 2.1. Questo è l'errore che mi si presenta quando mi connetto ad un archivio con uno script php3:

Unable to connect to PostgresSQL server: connectDB() failed: Is the
postmaster running and accepting connections at 'UNIX Socket' on port
'5432'? in /var/www/prova.php3

oppure

Unable to connect to PostgresSQL server: connectDB() failed: Is the
postmaster running with the '-i option?

Ho provato i vari modi di connessione (mettendo e omettendo il nome del server). Non va sia che l'archivio sia stato creato da un utente apposito (creato con createuser da postgres) che da postgres. Il postmaster funziona molto bene visto che riesco a utilizzare psql normalmente. Nella documentazione c'è scritto che se appare questo errore, o il postmaster non gira (invece gira) o mi connetto al server sbagliato (non mi pare di sbagliare). Il problema è apparso dopo l'aggiornamento del Postgres.

---------

In questo caso è proprio la mancanza dell'opzione -i che nel caso di aggiornamento del PostgreSQL non viene ripristinata.

Per ovviare al problema, devi modificare il file:

/etc/postgresql/postmaster.init

Questo file contiene una riga che serve ad abilitare le connessioni TCP/IP. Questa riga (che probabilmente attualmente è commentata o ha valore 'no'), deve risultare essere qualcosa del genere:

: PGALLOWTCPIP=yes

e ci deve essere anche la configurazione della porta:

: PGPORT=5432

Ci si deve anche ricordare che esiste anche il file pg_hba.conf che ti permette connessioni a distanza.

337.4   PostgreSQL

Ho installato regolarmente il postgres, ma non riesco a creare un archivio. Da cosa dipende?

---------

Dipende dal fatto che si devono creare utenti abilitati alla generazione degli archivi.

La creazione degli utenti è un'operazione che può fare solo l'utente postgres con il comando:

$ createuser nome[Invio]

dando prima il comando:

$ su postgres[Invio]

Se l'utente non è ancora in grado di creare l'archivio (e in realtà neanche l'utente postgres può farlo), allora vuol dire che non è stata inizializzata la struttura delle directory del database di postgres: occorre quindi eseguire:

$ su postgres[Invio]

e:

$ initdb[Invio]

337.5   Creare gli archivi con PostgreSQL

Come si crea un db con PostgreSQL?

$ createdb nomedb[Invio]

(deve essere però un utente abilitato alla creazione degli archivi. Questi poteri glieli conferisce l'utente postgres con il comando createuser)

337.6   Come si fa ad accedere ad un archivio in PostgreSQL?

Per accedere, modificare, aggiungere dati e strutture all'archivio si da il comando:

$ psql nome_archivio[Invio]

(deve essere però un utente abilitato . Questi poteri glieli conferisce l'utente postgres con il comando createuser)

337.7   Messaggio di errore: Unsupported frontend protocol con Postgres

Ho due PC collegati in rete, uno ha Red Hat 5.2 ed un altro la Debian GNU/Linux 2.1 Volevo condividere lo stesso archivio mediante PostgreSQL. Sul server (dove sta l'archivio) ho lanciato il demone postmaster con l'opzione -i.

All'atto però di connettermi all'archivio con:

psql -h 192.168.1.1 db_name

riscontro il seguente errore:

Connection to database 'nome_db' failed.
Unsupported frontend protocol.

Da che dipende?

---------

È un problema di compatibilità tra le due versioni di Postgres. Devono essere necessariamente le medesime. Le due distribuzioni hanno infatti versioni diverse.

LDR --- Copyright © 1999-2000 Gaetano Paolone --  bigpaul @ pluto.linux.it

[>a2427.html>] [<a2425.html<] [^a2.html^]