首页 > 解决方案 > 在 Red Hat Linux 6 上使用 PHP odbc 连接到 Teradata 数据库时出错

问题描述

我有一个安装并运行 Apache 和 PHP 的 Red Hat Linux 6。我已经安装了 MS SQL Server 和 Teradata 驱动程序,并且能够通过服务器终端上的 iSQL 连接并执行对这些数据库的查询。

当我尝试通过 PHP 脚本使用 ODBC 连接时,我能够连接并在 MS SQL Server 上执行查询,但如果我尝试连接到 Teradata 数据库,则会收到以下错误消息:

警告:odbc_connect():SQL 错误:[unixODBC][驱动程序管理器]无法打开 lib '/opt/teradata/client/14.10/odbc_64/lib/tdata.so':找不到文件,SQL 状态 01000

此文件 tdata.so存在于引用的位置,并具有所有可能的权限。

php代码是:

$con_string = "DRIVER={Teradata};DBCName=SERVER; DATABASE=MYDB;";
$con = odbc_pconnect( $con_string , "USER", "PASSWORD" );

odbc.ini 文件(位于 /etc/odbc.ini 中)具有以下内容:

[Teradata]
Driver=/opt/teradata/client/14.10/odbc_64/lib/tdata.so
Description=Teradata database
DBCName=SERVER
LastUser=
Username=
Password=
Database=
DefaultDatabase=

[MSSQL]
Description=Microsoft ODBC Driver 17 for SQL Server A
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.1.so.0.1
UsageCount=1

当我执行命令时:

ldd /opt/teradata/client/14.10/odbc_64/lib/tdata.so

我得到这个回应:

linux-vdso.so.1 =>  (0x00007ffff03ff000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fb736c1e000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fb736a07000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fb7367ea000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fb7365e6000)
librt.so.1 => /lib64/librt.so.1 (0x00007fb7363dd000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007fb7361c4000)
libodbcinst.so => /opt/teradata/client/14.10/odbc_64/lib/libodbcinst.so (0x00007fb735fa0000)
libddicu26.so => /opt/teradata/client/14.10/odbc_64/lib/libddicu26.so (0x00007fb7350a8000)
libtdparse.so => /opt/teradata/client/14.10/odbc_64/lib/libtdparse.so (0x00007fb734f22000)
libicudatatd.so.46 => /usr/lib64/libicudatatd.so.46 (0x00007fb7346d8000)
libicuuctd.so.46 => /usr/lib64/libicuuctd.so.46 (0x00007fb73444a000)
libm.so.6 => /lib64/libm.so.6 (0x00007fb7341c6000)
libc.so.6 => /lib64/libc.so.6 (0x00007fb733e32000)
/lib64/ld-linux-x86-64.so.2 (0x0000003727400000)

当我执行命令时,路径似乎也正确配置:

echo $LD_LIBRARY_PATH

我得到这个回应:

/opt/teradata/client/14.10/odbc_64/lib:/opt/teradata/client/14.10/lib:/opt/teradata/client/14.10/tbuild/lib:/opt/teradata/client/14.00/odbc_64/lib::/usr/lib

我不明白出了什么问题,我尝试了各种可能的解决方案,但没有什么对我有用。有人可以帮忙吗?

标签: phplinuxodbcteradataunixodbc

解决方案


推荐阅读