PostgreSQL
PostgreSQL
&reftitle.intro;
La base de données PostgreSQL est un produit Open Source, disponible
sans frais. PostgreSQL, 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 original 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
la Documentation PostgreSQL.
&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 bogue dans le gestionnaire d'alerte. Utilisez plutôt la
version 4.1.0 ou plus récente.
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
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.
Noms 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 bibliothèque libpq
(la bibliothèque 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
PostgreSQL transforme automatiquement tous les identifiants
(e.g. les noms de table/colonnes) en minuscule. Pour lui faire reconnaître
les valeurs en majuscules, vous devez toujours entourer l'identifiant de
simples guillemets.
&reference.pgsql.constants;
&reftitle.examples;
Depuis PostgreSQL 7.1.0, vous pouvez stocker jusqu'à 1 Go 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;