【问题标题】:ODBC lib Specified driver could not be loaded无法加载 ODBC lib 指定的驱动程序
【发布时间】:2012-05-10 03:51:40
【问题描述】:

我正在尝试安装 ODBC 驱动程序,但遇到了麻烦。

[root@Crux pkg]# isql -v
[IM002][DataDirect][ODBC lib] Data source name not found and no default driver specified
[ISQL]ERROR: Could not SQLConnect
[root@Crux pkg]# isql -3 SUBS2A
[IM003][DataDirect][ODBC lib] Specified driver could not be loaded
[ISQL]ERROR: Could not SQLConnect

我的INI文件如下;

odbcinst.ini

[ProgressOpenEdge]
Description = ODBC for Progress OpenEdge
Driver = /usr/dlc/odbc/lib/pgoe1023.so
;Setup = /usr/dlc/odbc/lib/pgoe1023.so
FileUsage = 1

odbc.ini

[SUBS2A]
Driver = ProgressOpenEdge
Description = Fail
DatabaseName = SUBS
PortNumber = 4000
HostName = 192.168.1.2
LogonID = SYSPROGRESS
Password = SYSPROGRESS
APILevel = 1
ConnectFunctions = YYN
CPTimeout = 60
DriverODBCVer = 03.50
FileUsage = 0
SQLLevel = 0
UsageCount = 1
ArraySize = 50
DefaultLongDataBuffLen = 2048
DefaultIsolationLevel = REPEATABLE READ
StaticCursorLongColBuffLen = 4096
[ODBC]
InstallDir = /usr/dlc/odbc
Trace = 0
TraceFile = odbctrace.out
TraceDll = /usr/dlc/odbc/lib/odbctrac.so
UseCursorLib = 0

我已经确保所有依赖项都通过 ldd 正确加载。

更新

输出:strace isql -v http://pastebin.com/tXFY4vVt

输出:strace isql -3 SUBS2A http://pastebin.com/Yu5e54mR

输出:/tmp/odbctrace.out http://pastebin.com/0kgvNdWv

谢谢

【问题讨论】:

  • 没关系。我患有脑痉挛。
  • 您是否在特定 TCP 端口上测试过网络连接?例如 nc 192.168.1.2 4000
  • 检查驱动程序是否存在与系统架构和服务器的兼容性问题。
  • 我没有链接到它,因为它不再相关,并且问题以与该帖子的更新无关的另一种方式解决。

标签: linux odbc drivers openedge progress-db


【解决方案1】:

您应该检查您的 ODBC 驱动程序是否可加载:

ldd /usr/dlc/odbc/lib/pgoe1023.so

加载器可能无法找到作为共享对象so库)的依赖项,这些依赖项在您的环境中尚不可用或在不同版本中可用。

我建议您添加/usr/dlc/odbc/lib/ 或根据您的系统添加其他路径:

  • 在环境变量LD_LIBRARY_PATH
  • 为 linux 加载程序添加一个特定文件,例如 /etc/ld.so.conf.d/odbc-pgoe.conf 使用 /usr/dlc/odbc/lib/ 行并使用 ldconfig 刷新(最佳选择)

如果问题仍然存在,请报告ldd 命令输出。可能预期的库文件名与您的 Linux 发行版不完全匹配。

更新: last comment of this post 确认 ld.so.conf 文件是使驱动程序正常工作的解决方案。你应该测试一下。

此论坛指的是similar situation。也许解决方案会解决您的问题。

如果仍然错误,请报告strace isql -3 SUBS2A的输出。就在写入错误消息之前,您可能会在此找到错误的线索,例如库加载失败、文件访问权限问题或其他问题。

【讨论】:

  • 是的,已经完成了,一切都在加载......抱歉,我会编辑我的问题。
  • 您是否使用了我建议的 /etc/ld.so.conf.d/ 方法或上一个问题中描述的“移动”?您不应该将库从一个位置移动到另一个位置......库可以由 C 代码本身动态加载(没有 ELF 中的加载器引用)。因此,我建议您使用“ldd”测试 ODBC 驱动程序安装中的所有库(可能都在 /usr/dlc/odbc/lib 中)。
  • strace isql -v: pastebin.com/tXFY4vVt 另外,在 /etc/ld.so.conf.d/ 我看到的只是 perl.conf,但我认为系统不支持.我确实将它放在环境文件中并运行了导出。我认为您的回答很有帮助,非常感谢,但仍然不是解决方案。
  • 这里是我的说明:创建一个文件“/etc/ld.so.conf.d/odbc-pgoe.conf”,内容为一行:“/usr/dlc/odbc/lib /”。由virtadept.com/?p=200 确认它应该真的有效
  • 对不起,我在监控命令上犯了一个错误。预期会出现“isql -v”错误消息,可能您尚未设置默认驱动程序。请发送“strace isql -3 SUBS2A”的输出和/tmp/odbctrace.out的内容
【解决方案2】:

(1)您可以在使用前检查驱动是否正确。

$ ivtestlib /usr/dlc/odbc/lib/pgoe1023.so

(2) 加载驱动时看日志 在控制台中,

tail -f /path/to/SysLog_OrOtherName.file

在另一个控制台中,

odbc.sh

【讨论】:

  • 我的系统没有该实用程序,我不知道您所说的系统日志。
猜你喜欢
  • 1970-01-01
  • 2017-06-28
  • 1970-01-01
  • 2016-01-14
  • 2018-12-08
  • 2010-10-25
  • 2021-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多