2016-02-13 54 views
8

我想从python应用程序与pyodbc连接到MS SQL服务器。我有pyodbc和unixODBC安装,我试图安装Linux的MS驱动程序。我认为问题是MS驱动程序缺少依赖关系,但尽可能接近我已经安装的依赖关系。因为微软的驱动程序不能通过百胜安装,所以我必须安装并运行安装脚本。所以,我确定有一些手动工作,我必须做的,以获得下面的链接缺失解决。我不知道如何做到这一点,因为我在Linux上是新手。我已经包含了我的配置文件,以防万一。libmsodbcsql-13.0.so.0.0阻止pyODBC与MS SQL连接的链接器错误。 CentOS 7

当我运行...

ldd /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0 

我得到以下...

/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0) 

/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0) 

linux-vdso.so.1 => (0x00007fff22b27000) 
libdl.so.2 => /lib64/libdl.so.2 (0x00007f03de43f000) 
libodbcinst.so.2 => /lib64/libodbcinst.so.2 (0x00007f03de22d000) 
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f03de027000) 
libgss.so.3 => not found 
libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f03ddd42000) 
libcrypto.so.1.0.0 => not found 
libssl.so.1.0.0 => not found 
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f03dda39000) 
....(THE REST ARE FOUND) 

odbcinst.ini odbc.ini

任何帮助或建议,欢迎。谢谢!

+0

你的屏幕截图是不可读的。你不能像在'ldd'输出中那样将错误信息复制/粘贴到你的Q中。好luc ,. – shellter

+0

我认为你正在使用msodbcsql的unixODBC不兼容版本。检查命令'''odbc_config --version'''是否返回msodbcsql的预期版本。 – bull90

回答

2

我记得我也有这个问题,但它是一年多以前,我没有访问该服务器了。

据我记得这是一个版本不匹配。如果您看到您的ldd输出,他们正在寻找libgss.so.3,libcrypto.so.1.0.0等。也许您的系统上安装了这些库的不同版本。

通过查看我的安装注意事项,它看起来像我通过创建(软)链接“指向”我的系统上的库来解决问题。而且 - 当然 - 我给这些链接名称msodbc正在寻找。是的......有点“粗鲁”但它对我有用。

+0

感谢您的确认。这是我领导的方向。快速提问。我是否在二进制文件所在的位置创建软链接?所以在我的情况下,它会进入/lib64/libstdc++.so.6并重定向到实际版本的位置?任何可能的样本ln -s命令让我开始。谢谢。 –

+0

我无法在该服务器上的/ lib或/ usr/lib下创建软链接(安全限制,我没有root密码)。所以...我在我的home-dir('$ {HOME}/mslib /')目录下创建了这些软链接,并将这个目录添加到我的LD_LIBRARY_PATH中... – mauro

+0

示例命令:'mkdir $ HOME/mslib'和然后'ln -s /usr/lib/libgss-3.0.0 $ HOME/mslib/libgss-2.8.0'(我不记得版本号 - 我在这里写了随机数字)。最后把你的新的LIB目录**放在**之前:'export LD_LIBRARY_PATH = $ {HOME}/mslib:$ {LD_LIBRARY_PATH}' – mauro