PostgreSQL
PostgreSQL
&reftitle.intro;
La base de données PostgreSQL est un produit Open Source, disponible
sans frais. Postgres, développé au département de
Science informatique, à UC Berkeley, met en place la majorité
des concepts des bases relationnelles, actuellement disponibles sur le
marché. PostgreSQL accepte le langage SQL92/SQL3, assure
l'intégrité transactionnelle, et l'extension de type.
PostgreSQL est une évolution du code originale de Berkeley.
&reftitle.required;
Pour accéder au support PostgreSQL, vous avez besoin de PostgreSQL 6.5
ou plus récent, PostgreSQL 7.0 ou plus récent pour activer toutes les
fonctionnalités du module PostgreSQL. PostgreSQL supporte de nombreux
jeux de caractères, y compris les jeux multi-octets asiatiques. La
version courante et plus de détails sur PostgreSQL sont accessibles
sur le site &url.pgsql; et
&url.pgsql.techdocs;.
&reference.pgsql.configure;
&reference.pgsql.ini;
Trucs et astuces d'utilisation
Utiliser le module PostgreSQL avec &php; 4.0.6 n'est pas recommandé
à cause d'un bug dans le gestionnaire d'alerte. Utilisez plutôt la
version 4.1.0 ou plus récent.
Le nom des fonctions PostgreSQL va changer dans la version 4.2.0 pour
prendre en compte les standards actuels de programmation. La plupart
des nouveaux noms recevront des soulignés, comme
pg_lo_open(). Certaines fonctions sont renommées différemment, comme
par exemple pg_exec() en pg_query(). Les anciens noms sont toujours
utilisés pour encore quelques versions, mais ils seront
bientôt supprimés définitivement.
Nom des fonctions qui ont changé
Ancien nom
Nouveau nom
pg_cmdtuples
pg_affected_rows
pg_errormessage
pg_last_error
pg_exec
pg_query
pg_fieldname
pg_field_name
pg_fieldsize
pg_field_size
pg_fieldnum
pg_field_num
pg_fieldprtlen
pg_field_prtlen
pg_fieldisnull
pg_field_is_null
pg_freeresult
pg_free_result
pg_getlastoid
pg_last_oid
pg_loreadall
pg_lo_read_all
pg_locreate
pg_lo_create
pg_lounlink
pg_lo_unlink
pg_loopen
pg_lo_open
pg_loclose
pg_lo_close
pg_loread
pg_lo_read
pg_lowrite
pg_lo_write
pg_loimport
pg_lo_import
pg_loexport
pg_lo_export
pg_numrows
pg_num_rows
pg_numfields
pg_num_fields
pg_result
pg_fetch_result
Les anciennes syntaxes de
pg_connect/pg_pconnect
seront rendues obsolètes pour supporter les nouvelles connexions asynchrones.
Utilisez la chaîne de connexion avec pg_connect
et pg_pconnect.
Toutes les fonctions ne sont pas supportées par toutes les
compilations. Cela dépend de votre librairie libpq
(la librairie C client de PostgreSQL), et comment libpq
est compilé. S'il y a des fonctions qui manquent, libpq ne
supporte par la fonctionnalité sur laquelle reposait la fonction
n'est pas disponible.
Il est aussi important que vous utilisiez une version de libpq
qui soit plus récente que le serveur sur lequel vous vous connectez.
Si vous utilisez une version de libpq plus ancienne que le serveur,
vous aurez des problèmes.
Depuis la version 6.3 (03/02/1998), PostgreSQL utilise les sockets UNIX, et
une table est dédiée à ces nouvelles capacités.
La socket est située dans le dossier
/tmp/.s.PGSQL.5432. Cette option peut être
activée avec '-i' passé au postmaster
et cela s'interprète: "écoute sur les sockets TCP/IP et sur
les sockets Unix".
Postmaster et &php;
Postmaster
PHP
Statut
postmaster &
pg_connect("dbname=MyDbName");
OK
postmaster -i &
pg_connect("dbname=MyDbName");
OK
postmaster &
pg_connect("host=localhost dbname=MyDbName");
Unable to connect to PostgreSQL server: connectDB() failed:
Impossible de se connecter au serveur PostgreSQL:
connectDB() a échoué. Est ce que le postmaster fonctionne,
et accepte les TCP/IP (option -i) sur le port '5432'?
postmaster -i &
pg_connect("host=localhost dbname=MyDbName");
OK
Il est possible de se connecter avec la commande suivante :
$conn = pg_Connect("host=monHote port=monPort tty=monTTY
options=myOptions dbname=myDB user=myUser password=myPassword");
L'ancienne syntaxe :
$conn = pg_connect("host", "port", "options", "tty", "dbname")
est obsolète.
Les variables environnementales affectent le comportement de PostgreSQL.
Par exemple, le module PostgreSQL va rechercher PGHOST
dans les variables d'environnement, si le nom du serveur hôte est
omis dans la chaîne de connexion. Les variables d'environnement
supportées sont différentes suivant les versions. Reportez vous au
manuel du programmeur PostgreSQL (libpq - Environment Variables) pour plus
de détails.
Assurez vous que vous avez bien configuré vos variables d'environnement pour
le bon utilisateur. Utilisez $_ENV ou
getenv pour vérifier quelles variables d'environnement
sont disponibles pour le processus courant.
Configuration par défaut des paramètres
&reference.pgsql.constants;
&reftitle.examples;
Depuis PostgreSQL 7.1.0, vous pouvez stocker jusqu'à 1Go dans
un champ de type text. Dans les anciennes versions, vous étiez
limité à la taille maximale d'un bloc (qui, par défaut, valait
8 ko, et au mieux, 32 ko, suivant le choix au moment de la compilation).
Pour utiliser l'interface des grands objets (large object (lo) interface),
il est nécessaire de les placer dans un bloc de transaction. Un bloc
de transaction commence avec BEGIN et si la transaction
se termine avec un COMMIT et END. Si
la transaction échoue, elle doit être conclue par un
ABORT et ROLLBACK.
Utilisation des objets de grande taille (Large Objects)
]]>
Vous ne devez pas fermer la connexion au serveur PostgreSQL avant
de fermer l'objet de grande taille.
&reference.pgsql.functions;