Delphi11.3でPostgreSQL12.6に接続できない


Moe  2024-09-18 22:12:56  No: 151614

お世話になります。
Delphi11.3Enterpriseを使用しています。FireDACでPostgreSQL12.6(64ビット)に接続しようとしているのですが、上手く行かず悩んでおります。
●試したことは次の通りです。
①C:\Program Files\PostgreSQL\12\binからlibpq.dllをコピーして、PATHの通っているフォルダへペースト。さらにEXEが出来る場所にもコピー
②Delphi(FMX)のフォームにTFDPhysPgDriverLinkを配置し、VendorLibプロパティに①を指定
③TFDConnectionをフォームに配置し、ダブルクリックしFireDAC接続エディタで次の属性を設定
 ・ドライバID:PG(※プルダウンより選択)
 ・Database:testdb
 ・User_Name:moe
 ・Password:xxx
 ・Server:<LOCAL>(※プルダウンより選択)
 ・Port:5432
 ・CharacterSet:UTF8(※プルダウンより選択)
④FireDAC接続エディタの「テスト」ボタンを押下
⑤次のメッセージが表示されます。
[FireDAC][Phys][PG]-314.ベンダライブラリ[C:\Delphi\Lib\libpq.dll]を読み込めません。Library has unsupported architecture [x64].Required [x86].
%1は有効な Win32 アプリケーションではありません。
ヒント:PATH またはアプリケーションの EXE ディレクトリに含まれているか、X86ビットであるかを確認してください。.

●教えて頂きたいこと
1.上記の手順や設定に何か不備はありますでしょうか?
2.表示されたメッセージから、FireDACは32ビットしかサポートされていないのでしょうか?

どうぞ、宜しくお願い致します。


HFUKUSHI  2024-09-19 10:53:28  No: 151615

DLLは呼び出すプログラムと同じビット数のものを用意する必要があります。これはデータベースサーバとは独立しています。
DelphiのIDEや、その上でデザインしている場合、32ビットのDLLが必要になります。Windows 32ビットでビルドしたプログラムも同様です。
またWindows 64ビットでビルドしたプログラムには64ビットのDLLが必要になります。

PostgrSQLは詳しくないのですが、エラーメッセージから同梱されているlibpq.dllは64ビットのものだと思われます。
32ビットのものは

Delphi / FireDAC から PostgreSQL12に接続 #PostgreSQL - Qiita
https://qiita.com/a23/items/ce3d7665a773e60727c0

を見ると、pgAdmin4に同梱されているようです。


Moe  2024-09-19 13:17:09  No: 151616

HFUKUSHI さん
ありがとうございます。
DelphiのIDEが32ビットなので、32ビット版のDLLが必要なのですね!
リンク頂いたページを参考にDLし、またご報告させて頂きます。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加