DelphiXE10.4 + UniDAC 链接 PostgreSQL 15 笔记

本文讲述了在将数据库从PostgreSQL8升级到15版本后,如何解决使用UniDAC连接问题,包括SSLMode参数调整、Windows和Linux环境下缺少DLL的处理,以及不同版本OpenSSL库的下载和配置方法。

最近公司业务需要,将数据库postgresql升级到了15版本,原来使用的UniDAC版本是8,发现连接不上数据库了。于是升级了UniDAC版本到9.4版。不管是设计期,还是运行期,都还是无法连接上PostgreSql 15(一下简称PG15),真是不知道问题出在哪里;

1,连接数据库参数设置

后来经过同事的帮忙,发现是参数的问题,只需要修改一个SSLMode就可以连接上了;而且并不需要升级UniDac的版本;参数修改成如下图:

如果是运行期动态连接数据库,需要增加如下一行代码:

UniConnection.SpecificOptions.Values['SSLMode'] := 'smAllow';

 2,WINDOW环境,缺少DLL的解决办法

如果运行时连接数据库,出现以下报错信息:

OpenSSL client library couldn''t be loaded. Please place libeay32.dll and ssleay32.dll (or libssl32.dll) to system folder (included to PATH) or to the folder with executable unit of main program.

意思是:缺少libeay32.dll文件,需要将libeay32.dll文件加到系统环境变量,或者是将libeay32.dll文件放到运行程序的指定目录;

解决办法:需要将libeay32.dll 和 ssleay32.dll文件(注意对应的Target Platforms,.dll版本也不一样),放到系统文件夹(包含在PATH中)或带有主程序可执行单元的文件夹中,

可以是Win32\Debug或者Win64\Debug目录中

3,Linux环境,缺少DLL的解决办法

如果是Linux下连接PG15数据库,遇到如下错误提示:

 'OpenSSL client library couldn'''t be loaded. Please place libssl.so file to system folder (included to LD_LIBRARY_PATH) or to the folder with executable unit of main program.'#015#012'libssl.so: 无法打开共享对象文件: 没有那个文件或目录'

只需要在Linux系统中升级一下OpenSSL,再将libssl.so配置到环境变量里面即可;

我使用的CentOS 7 – 64虚拟系统;

安装OpenSSL

[root@localhost ~]# sudo yum install openssl-devel

将libssl.so配置到环境变量里,并且最好加到配置文件里面,这样长期有效

[root@localhost ~]# echo LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/libssl.so >> /etc/profile

[root@localhost ~]# source /etc/profile

如果profile文件中,添加的环境变量路径有:,需要去掉,如下图:

4,需要的不同版本的OpenSSL库文件,可以在此下载:

https://github.com/IndySockets/OpenSSL-Binaries

到此结束!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值