CentOS下MariaDB 10.4连接Oracle时libsqora.so.11.1找不到求助
解决MariaDB CONNECT引擎无法加载Oracle ODBC库的问题
问题核心
你手动设置的LD_LIBRARY_PATH仅对当前shell会话生效,但MariaDB服务进程并未继承该环境变量,导致其无法找到Oracle ODBC驱动库libsqora.so.11.1。虽然isql能正常连接(因为它在当前shell会话中运行,继承了环境变量),但MariaDB服务进程的运行环境中没有这个路径配置。
解决方案
方法1:配置MariaDB服务的环境变量(systemd方式)
- 编辑MariaDB的systemd服务文件:
vi /usr/lib/systemd/system/mariadb.service - 在
[Service]区块中添加环境变量配置:Environment="LD_LIBRARY_PATH=/home/oracle/instantclient_11_2" - 重新加载systemd配置并重启MariaDB:
systemctl daemon-reload systemctl restart mariadb
方法2:添加全局系统库路径
- 创建Oracle即时客户端的库路径配置文件:
echo "/home/oracle/instantclient_11_2" > /etc/ld.so.conf.d/oracle-instantclient.conf - 更新系统库缓存:
ldconfig - 重启MariaDB服务:
systemctl restart mariadb
方法3:手动启动MariaDB时指定环境变量(仅适用于非服务启动场景)
如果是手动启动MariaDB而非通过systemd服务管理,可在启动命令前直接指定环境变量:
LD_LIBRARY_PATH=/home/oracle/instantclient_11_2 mysqld_safe &
验证
完成上述操作后,重新执行创建CONNECT引擎表的语句:
CREATE TABLE ora_emp ENGINE=CONNECT TABLE_TYPE=ODBC TABNAME='EMP' CONNECTION='DSN=orcl;UID=scott;PWD=tiger';
此时应该能成功创建表,不再出现库文件找不到的错误。
内容的提问来源于stack exchange,提问作者dae-hee Kim.
相关产品推荐
相关产品推荐

