Postgres, desenvolvida originalmente no Deparetamento de Ciências de Computação de Berkeley, foi pioneira em muitos dos conceitos de relacionamento-objeto que agora estão tornando-se disponíveis em alguns bancos de dados comerciais. Ele fornece suporte a linguagem SQL92/SQL99, integridade de transações e extensibilidade de tipos. Postgres é um descendente em código aberto do código original de Berkeley.
O banco de dados PostgreSQL é um produto Open Source disponível sem nenhum custo. Para usar o suporte a PostgreSQL você precisa do PostgreSQL 6.5 ou superior. PostgreSQL 7.0 ou superior para habilitar todas as funções do módulo PostgreSQL. PostgreSQL suporta muitos códigos de caracteres incluindo a codificação de carcateres multibyte. A versão atual e maiores informações sobre PostgreSQL está disponível em http://www.postgresql.org/.
Para habilitar o suporte a PostgreSQL a opção de configuração --with-pgsql[=DIR] é exigida quando você compila o PHP. Se o módulo compartilhado está disponível, o módulo PostgreSQL pode ser carregado usando a diretiva extension no php.ini ou a função dl(). Diretivas ini suportadas estão descritas em php.ini-dist que vem com a distribuição.
Atenção |
Usar o módulo PostgreSQL com o PHP 4.0.6 não é recomendado devido a um bug no código de manipulação de mensagens de nota. Use o 4.1.0 ou superior. |
Atenção | ||||||||||||||||||||||||||||||||||||||||||||
Os nomes das funções PostgreSQL serão alterados na versão 4.2.0 para confirmar os padrões de programação atuais. A maioria dos novos nomes terão sublinhados adicionais, por exemplo pg_lo_open(). Algumas funções foram renomeadas para uma maior consistência, por exemplo pg_exec() que mudou para pg_query(). Os nomes antigos podem ser usados na 4.2.0 e em algumas poucas outras atualizações após esta, mas eles serão deletados em um futuro próximo. Tabela 1. Nomes de funções alterados
A antiga sintaxe pg_connect()/pg_pconnect() será obsoleta para suportar conexões assíncronas no futoro. Por favor use a string de conexão para pg_connect() e pg_pconnect(). |
Nem todas as funções são suportadas por todas as compilações. Isso vai depender da versão do seu libpq (A interface C do cliente PostgreSQL) e como o seu libpq foi compilado. Se há alguma função ausente, a libpq não suporta a característica exigida pela função.
Também é importante que você use uma libpq mais nova do que a que o servidor espera. Se você usar uma libpq mais antiga do que a que o servidor espera você poderá ter problemas.
Desde a versão 6.3 (03/02/1998) PostgreSQL usa sockets de domínio unix por padrão. A porta TCP não será aberta por padrão. Uma tabela é mostrada abaixo descrevendo essas novas possibilidades de conexão. Este socket será encontrado em /tmp/.s.PGSQL.5432. Espa opção pode ser habilitada com a chave '-i' para o postmaster e seu significado é: "escute em sockets TCP/IP assim como em sockets de domínio Unix".
Tabela 2. Postmaster e PHP
Postmaster | PHP | Status |
---|---|---|
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: Is the postmaster running and accepting TCP/IP (with -i) connection at 'localhost' on port '5432'? in /path/to/file.php on line 20. |
postmaster -i & | pg_connect("host=localhost dbname=MyDbName"); | OK |
Uma conexão com o servidor PostgreSQL pode ser estabelecida com os seguintes pares de valores definidos na string de comando: $conn = pg_connect("host=meuHost port=minhaPorta tty=meuTTY options=minhasOpcoes dbname=meuDB user=meuUsuario password=minhaSenha ");
A sintaxe anterior de: $conn = pg_connect ("host", "porta", "opcoes", "tty", "nomebd") está obsoleta.
Variáveis de ambiente afetam o comportamento do servidor/cliente PostgreSQL. Por exemplo, o módulo PostgreSQL irá procurar pela variável de ambiente PGHOST quando o nome de host é omitido na string de conexão. As variáveis de ambiente suportadas variam de versão para versão. Vide o Manual de PRogramador do PostgreSQL (Programmer´s Manual) na seção libpq - Enviroment Variables para maiores detalhes.
Certifique-se que você definou as variáveis de ambiente para o usuário apropriado. Use $_ENV ou getenv() para verificar que variáveis de ambiente estão disponíveis para o processo atual.
A partir do PostgreSQL 7.1.0, você pode armazenar até 1GB dentro de um campo do tipo texto. Em versões mais antigas, isto era limitado ao tamanho do bloco (padrão era 8KB e o máximo era 32KB definido em tempo de compilação)
Para usar a interface de objetos grandes (lo), é exigido que se encapsule as funções de objetos grandes dentro de um bloco de transação. Um bloco de transação inicia-se com a declaração SQL BEGIN e se a transação foi válida termina com COMMIT ou END. Se a transaão falhar, ela deve ser fechada com ROLLBACK ou ABORT.