如何在 Linux 上通过 ODBC 配置从 Sybase IQ 访问 Sybase Anywhere 的连接

frl*_*lan 5 sybase odbc sybase-sql-anywhere sybaseiq

我正在尝试通过 ODBC 驱动程序从 IQ16 访问 ASA16 服务器。两台服务器都安装在同一个 Linux 机器上。

我已经安装unixodbc-bin并添加了一个文件 .odbc.init 到运行数据库的用户的家中:

[mes_input]
Driver=/opt/sqlanywhere16/lib64/libdbodbc16_r.so
uid=dba
pwd=SQL
EngineName=mes_input
CommLinks=tcpip(host=127.0.0.1;port=49152)
AutoStop=no
DatabaseName=mes_input
Run Code Online (Sandbox Code Playgroud)

ASA 在那个盒子上的 49152 上运行;IQ 运行默认值 2638。

另外,我在接口文件锁定中添加了一个条目,如下所示:

mes_input
        master tcp ether myserver 49152
        query tcp ether myserver 49152
Run Code Online (Sandbox Code Playgroud)

回到 IQ,我可以通过 Sybase Central 添加远程服务器以及此框中的表。还测试连接并显示没有错误。

但是当我现在尝试通过例如从 ASA 复制一些数据时

INSERT locale_table LOCATION 'mes_input.mes_input' 'SELECT * FROM table'
Run Code Online (Sandbox Code Playgroud)

我越来越:

Connectivity libraries cannot be found (check your dynamic library
search path).  Selects from attached databases are not possible without
these libraries.  
-- (hqmlib/hqm_cpm.cxx 146)
SQLCODE=-1003005, ODBC 3-Status="HY000"
Zeile 1, Spalte 1
Run Code Online (Sandbox Code Playgroud)

我错过或错误配置的东西?

Lea*_*min 2

查了官方文档发现这个错误,可以看到如下:

使用启动 SAP IQ 服务器的同一用户来获取 SAP IQ 设置脚本。

这将设置 LD_LIBRARY_PATH 和其他重要的环境变量。

发生该错误的原因可能是在运行 SAP IQ 的主机上未设置/错误设置了适当的环境变量。

您需要在 Linux Box 上设置环境变量。

您可以执行以下操作来设置这些变量:

更改到 SAP IQ 父安装目录并执行以下命令之一: 对于 tcsh 或 C (csh) shell,请输入:

source ./IQ.csh
Run Code Online (Sandbox Code Playgroud)

对于 Korn (ksh)、Bash 或 Bourne (sh) shell,请输入:

source ./IQ.sh
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。