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;