segunda-feira, 14 de abril de 2014

PostgreSQL: Fatal error: Call to undefined function pg_connect()

Eis um problema que me tirou o sono por vários dias, tentando fazer funcionar Apache + PHP + PostgreSQL instalados de forma independente.

Primeiro deixe eu colocar que não sou a favor de usar WAMP / EasyPHP e outros pacotes similares, porque na hora de configurar um servidor de produção é necessário conhecer cada opção de configuração e nada melhor do que fazer isso instalando os softwares de forma independente.

Voltando ao problema inicial, estava tudo funcionando direito em meu notebook, até que precisei reinstalar os três pacotes (Apache + PHP + PostgreSQL) (não lembro porquê...).

Baixei e instalei as versões mais recentes do Apache, PHP e PostgreSQL.
Configurei corretamente os arquivos httpd.conf e php.ini e em um momento era o PHP que não queria conversar, na outra era o PostgreSQL que não funcionava com o PHP.

"Fatal error: Call to undefined function pg_connect() in ....\conection.php on line 26 "

Pesquisando um monte, a solução dos problemas foi aparecendo aos poucos.

Antes de mais nada, estou rodando no notebook:
- Windows 7 Professional (64 bits)
- Apache 2.2.22 (32 bits)
- PHP 5.3.5 (**VC6**-x86)(32 bits)
- PostgreSQL 9.1 (64 bits)
- PostgreSQL 9.3 (32 bits)

A primeira descoberta que fiz foi saber qual versão do PHP deve ser instalada em função do tipo de servidor web usado (IIS ou Apache). Aqui você já encontra uma dica.
Lendo mais um pouco, descobri que o local em que foi feito o download do Apache também influencia na escolha da versão do PHP que deve ser usada.
Agora você entende porque tem um **VC6** destacado aí em cima...
Com isso, coloquei o PHP e o Apache para rodar..... fim do primeiro round.

Depois de configurar corretamente o php.ini para carregar as extensões do PostgreSQL e reiniciar o Apache, parecia que tudo iria funcionar perfeitamente (pois não apareceu nenhuma mensagem de erro).

Foi quando rodei meu programa para testar a conexão e recebi a mensagem:
"Fatal error: Call to undefined function pg_connect() in ....\conection.php on line 26 "

Passei por vários fóruns tentando descobrir (sem sucesso) uma solução para o problema.
Já estava desanimado quando comecei a ler os comentários em um fórum e, então, vi uma sugestão que não custava tentar: copiar o arquivo libpq.dll (que está na pasta do PHP) para a pasta bin do Apache.

Assim feito, reiniciei o Apache e rodei novamente meu programa PHP para teste de conexão com o banco e.... PRONTO!!!!  Funcionou.

E agora estou aqui postando a solução que funcionou para mim, para que possa ajudar outros com o mesmo problema.

quarta-feira, 2 de abril de 2014

SQL Art - Mandelbrot set

Seguindo a linha do SQL Art iniciada no post anterior, aqui você encontra um script SQL que irá desenhar uma imagem representando o Conjunto de Mandelbrot.

Esta foi mais uma contribuição que apareceu na lista [pgbr=geral].

SQL Art

Recebi hoje na lista [pgbr-geral] e achei muito  legal....

Experimente copiar e rodar o código abaixo em um terminal do PostgreSQL (não pode ser via pgAdmin):

select * from

   (select array_to_string(array_agg(CASE WHEN (power((xx.x-25),2)/130+power((yy.y-25),2)/130)=1 THEN '$' WHEN (sqrt(power(xx.x-20,2)+power(yy.y-20,2)))<2 THEN '#' WHEN (sqrt(power(xx.x-20,2)+power(yy.y-30,2)))<2 THEN '#' WHEN (sqrt(power(xx.x-29,2)+power(yy.y-25,2)))<4 THEN '#' WHEN (power((xx.x-10),2)/40+power((yy.y-10),2)/40)=1 THEN '$' WHEN (power((xx.x-10),2)/40+power((yy.y-40),2)/40=1) THEN '$' ELSE ' ' END),' ') as cartoon from

      (select generate_series(1,40) as x) as xx,(select generate_series(1,50) as y) as yy group by xx.x order by xx.x) as co_ord;

http://feedproxy.google.com/~r/blogspot/rFRqt/~3/oTGb8aK0Qt4/cartoon-in-pg.html

Conhece outros exemplos? posta nos comentários...