PostgreSQL no Delphi XE8 com FireDac

PostgreSQL

Delphi

10/04/2015

Pessoal quero usar PostgreeSQL no Delphi XE8, usando FireDAC. Meu sistema é Windows 8.1 64 bits e meu Postgree também é 64 bits.

No arquivo FDDrivers.ini, apontei o vendorlib a pasta com as dll's do Postgree, tudo certinho. Configurei a conexão com o banco no arquivo FDConnectionDefs.ini.

Porém, quando coloco um componente FDConnection1 no form,configuro e mudo a propriedade 'connected' para true, aparece o erro:

[FireDAC][Phys][PGSQL]-314. Cannot load vendor library [C:\Program Files\PostgreeSQL\9.4\bin\libpq.dll]. Library has unsupported architeture [x64]. Required [x86].
Hint: check it is in the PATH or application EXE directories, and has x86 bitness..

Ou seja, o delphi requer que a dll libpq.dll seja de arquitetura 32 bits, obrigatoriamente. Porém como o Postgre é 64bits, as dll's dele também são, obviamente.

Alguém pode me ajudar?
Fabrício Santos

Fabrício Santos

Curtidas 1

Melhor post

Fabrício Santos

Fabrício Santos

12/04/2015

Fabriccio,

Considerando o tipo de aplicação que você vai desenvolver e o ambiente final em que ela será instalado, não faria sentido migrar todo o ambiente de desenvolvimento para 32 bits, minimizando os problemas futuros deimplantação ?

Tem razão, eu desinstalei o postgre 64 e instalei o 32, deu certo, com masi algumas configurações adicionais que eu não sabia. Obrigado ;)
GOSTEI 1

Mais Respostas

Marcos P

Marcos P

10/04/2015

Fabriccio,

Considerando o tipo de aplicação que você vai desenvolver e o ambiente final em que ela será instalado, não faria sentido migrar todo o ambiente de desenvolvimento para 32 bits, minimizando os problemas futuros deimplantação ?
GOSTEI 0
Marcos P

Marcos P

10/04/2015

Legal !!!
GOSTEI 0
Marcio

Marcio

10/04/2015

Pelo que percebi, funciona sim, porém só quando o executável que será compilado é de 64bits.

Por exemplo, se você estiver gerando um executável para Windows, deverá escolher a plataforma 64 bits, se estiver selecionado como 32 bits o erro ocorrerá.

Um detalhe, faço a configuração do vendorlib em tempo de execução como abaixo:
FDPhysPgDriverLink1.VendorLib := 'C:\<pasta_projeto>\libpq.dll';

Espero ter ajudado.
GOSTEI 1
Rodrigo Rodrigues

Rodrigo Rodrigues

10/04/2015

Olá Fabriccio,

Eu estava com o mesmo problema, e não quis ter que instalar a versão de 32 bits porque não vai ser essa a que vai estar em produção.
Para contornar esse erro em DesignTime, eu baixei o pacote ZIP de 32 bits da mesma versão que eu tenho instalada de 64 bits.
Extraí apenas a pasta 'bin', renomeei para 'bin32' e colei na pasta de instalação do Postgre.
No arquivo FDDrivers.ini, apontei para o arquivo 'libpq.dll' dentro da pasta bin32 e, voilá, tudo funcionando.
Quando compila em 64 bits não tem problema nenhum, em tempo de execução, mas se der algum galho, só copiar na pasta do executável os arquivos .dll indicados em http://docwiki.embarcadero.com/RADStudio/XE8/en/Connect_to_PostgreSQL_(FireDAC)

libpq.dll
ssleay32.dll
libeay32.dll
libintl-8.dll
libiconv-2.dll

Acho q isso acontece pq a Embarcadero insiste em fazer o RAD Studio na versão 32 bits ainda.. Devia pelo menos dar opção de instalar a IDE em 32 ou 64 bits.
GOSTEI 1
Richard Slater

Richard Slater

10/04/2015

Faça o seguinte, vá no painel de controle-->Sistema do lado esquerdo clique em Configuração avançado do sistema, depois em Variáveis do ambiente, e no grupo variáveis do ambiente localize a variável patch clique em editar e no final da linha adicione um ; e logo em seguida sem espaço copie e cole o caminho completo da localização das dlls na pasta do postgres. comigo funcionou perfeitamente nas versões 32 e 64 tb não precisei alterar o arquivo FDDrivers.ini espero ter ajudado :)
GOSTEI 0
POSTAR