|
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.
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 http://www.postgresql.org/ et la Documentation PostgreSQL.
Afin d'activer le support PostgreSQL, l'option --with-pgsql[=DIR] est nécessaire lors de la compilation de PHP. DIR est le chemin du dossier d'installation de PostgreSQL, et par défaut il vaut /usr/local/pgsql. Si le module de chargement dynamique est disponible, le module PostgreSQL peut être chargé avec la directive extension du fichier php.ini ou via la fonction dl().
Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.
Tableau 1. Options de configuration
Nom | Par défaut | Modifiable | Historique |
---|---|---|---|
pgsql.allow_persistent | "1" | PHP_INI_SYSTEM | |
pgsql.max_persistent | "-1" | PHP_INI_SYSTEM | |
pgsql.max_links | "-1" | PHP_INI_SYSTEM | |
pgsql.auto_reset_persistent | "0" | PHP_INI_SYSTEM | Disponible depuis PHP 4.2.0. |
pgsql.ignore_notice | "0" | PHP_INI_ALL | Disponible depuis PHP 4.3.0. |
pgsql.log_notice | "0" | PHP_INI_ALL | Disponible depuis PHP 4.3.0. |
Voici un éclaircissement sur l'utilisation des directives de configuration.
Autorise ou non les connexions persistantes Postgre.
Le nombre maximum de connexions persistantes Postgre par processus.
Le nombre maximum de connexions Postgre par processus, y compris les connexions persistantes.
Détecte les connexions persistantes (ouvertes avec pg_pconnect()) rompues.
Active ou non l'affichage des notices PostgreSQL.
Active ou non l'enregistrement en fichier log des messages notices PostgreSQL. La directive PHP pgsql.ignore_notice doit être désactivée pour pouvoir enregistrer les messages de notices en fichier log.
Avertissement |
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. |
Avertissement | ||||||||||||||||||||||||||||||||||||||||||||||
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. Tableau 2. Noms des fonctions qui ont changé
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".
Tableau 3. 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.
Note : 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.
Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.
Passée à pg_fetch_array(). Retourne un tableau associatif des noms et valeurs des champs.
Passée à pg_fetch_array(). Retourne un tableau à index numérique des numéros et valeurs des champs.
Passée à pg_fetch_array(). Retourne un tableau des valeurs des champs qui est indexés numériquement (par le numéro des champs) et indexés associativement (par le nom des champs).
Passée à pg_connect() pour forcer la création d'une nouvelle connexion, plutôt que de réutiliser une connexion identique existante.
Retournée par pg_connection_status() indiquant que la connexion à la base de données est invalide.
Retournée par pg_connection_status() indiquant que la connexion à la base de données est valide.
Passée à pg_lo_seek(). Le positionnement commencera au début de l'objet.
Passée à pg_lo_seek(). Le positionnement commencera à la position courante.
Passée à pg_lo_seek(). Le positionnement commencera à la fin de l'objet.
Retournée par pg_result_status(). La chaîne de caractères envoyée au serveur était vide.
Retournée par pg_result_status(). Commande correctement complétée ne retournant aucune donnée.
Retournée par pg_result_status(). Commande correctement complétée retournant des données (comme SELECT ou SHOW).
Retournée par pg_result_status(). Copie (à partir du serveur) de transfert de données commencée.
Retournée par pg_result_status(). Copie (vers le serveur) de transfert de données commencée.
Retournée par pg_result_status(). La réponse du serveur n'a pas été comprise.
Retournée par pg_result_status(). Une erreur non fatale (de niveau notice ou warning) s'est produite.
Retournée par pg_result_status(). Une erreur fatale s'est produite.
Retournée par pg_transaction_Status(). La connexion est présentement libre, aucune transaction en cours.
Retournée par pg_transaction_status(). Une commande est en cours sur la connexion. Une requête a été envoyée sur la connexion et n'a toujours pas été complétée.
Retournée par pg_transaction_status(). La connexion est libre, dans un bloc de transaction.
Retournée par pg_transaction_status(). La connexion est libre, dans un bloc de transaction échoué.
Retournée par pg_transaction_status(). La connexion est mauvaise.
Passée à pg_result_error_field(). La sévérité; le contenu du champ est ERROR, FATAL ou PANIC (dans un message d'erreur) ou WARNING, NOTICE, DEBUG, INFO ou LOG (dans un message d'avertissement) ou une traduction localisée parmi celles-ci. Toujours présent.
Passée à pg_result_error_field(). Le code SQLSTATE pour cette erreur. Le code SQLSTATE identifie le type d'erreur qui s'est produite; cela peut être utilisé par des applications d'entrée pour effectuer des opérations spécifiques (comme la gestion d'erreur) en réponse à une erreur de base de données particulière. Ce champ ne peut être localisé et est toujours présent.
Passée à pg_result_error_field(). Le champ d'erreur primaire interprétable pour l'utilisateur (normalement une ligne). Toujours présent.
Passée à pg_result_error_field(). Détail : un second optionnel message d'erreur apportant plus de détails à propos du problème. Peut être sur plusieurs lignes.
Passée à pg_result_error_field(). Conseil : une suggestion optionnelle qui indique que faire à propos du problème. Ceci est prévu d'être différent de l'erreur puisqu'elle offre un conseil (potentiellement inadéquat) plutôt que les faits véridiques. Peut être sur plusieurs lignes.
Passée à pg_result_error_field(). Une chaîne de caractères contenant une valeur entière décimale indiquant une erreur de position du curseur en tant qu'index dans la requête originale. Le premier caractère a l'index 1 et les positions sont mesurées en caractères, non en octets.
Passée à pg_result_error_field(). Ceci est défini étant la même chose que le champ PG_DIAG_STATEMENT_POSITION, mais cela est utilisé lorsque la position du curseur réfère à une commande générée internement plutôt que d'une envoyée par le client. Le champ PG_DIAG_INTERNAL_QUERY apparaîtra toujours lorsque ce champ apparaît.
Passée à pg_result_error_field(). Le texte d'une commande générée internement échouée. Cela peut être, par exemple, une requête SQL envoyée par une fonction PL/pgSQL.
Passée à pg_result_error_field(). Une indication du contexte dans lequel l'erreur s'est produit. Présentement, ceci inclue une pile d'appel des traceback des fonctions procédurales actives ainsi que des requête générées à l'interne. Le traçage est une entrée par ligne, les plus récentes en premier.
Passée à pg_result_error_field(). Le nom du fichier de l'emplacement du code source PostgreSQL où l'erreur a été reportée.
Passée à pg_result_error_field(). Le nombre de ligne de l'emplacement du code source PostgreSQL où l'erreur a été reportée.
Passée à pg_result_error_field(). Le nom de la fonction de source code PostgreSQL reportant l'erreur.
Passée à pg_set_error_verbosity(). Spécifie que les messages retournés incluent la sévérité, le texte primaire ainsi que la position seulement; ceci devrait entrer sur une seule ligne.
Passée à pg_set_error_verbosity(). Le mode par défaut produit des messages qui incluent ce qui est plus haut et des détails en plus, conseil ou des champs contextes (ceci peut être sur plusieurs lignes).
Passée à pg_set_error_verbosity(). Le mode verbeux inclue tous les champs disponibles.
Passée à pg_result_status(). Indique que le code résultat est désiré numérique.
Passée à pg_result_status(). Indique que le tag de résultat de commande est désiré textuel.
Passée à pg_convert(). Ignore les valeurs par défaut dans la table pendant la conversion.
Passée à pg_convert(). Utilise NULL à la place d'une chaîne de caractères vide.
Passée à pg_convert(). Ignore la conversion de NULL à l'intérieur des colonnes NOT NULL.
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.
Précédent | Sommaire | Suivant |
posix_uname | Niveau supérieur | pg_affected_rows |
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:02:00