sqlcmd无法找到存在的库(libmsodbcsql-17.0.so.1.1)

Hac*_*k-R 6 sql ubuntu sqlcmd

我在Ubuntu 16.04上尝试使用sqlcmd脚本编程方式在VM的云中执行SQL查询.

vm-dev:~$ sudo sqlcmd -S my-db.url.net -d my-db
Run Code Online (Sandbox Code Playgroud)

我一直收到这个错误:

Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程序17:无法打开lib'/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.0.so.1.1':找不到文件.

但文件显然在那里:

vm-dev:~$ ls /opt/microsoft/msodbcsql17/lib64/
Run Code Online (Sandbox Code Playgroud)

libmsodbcsql-17.0.so.1.1

Diy*_*yar 7

我有同样的问题,这个解决方案对我有用:您必须降级msodbcsql版本,

  1. apt-get删除msodbcsql
  2. apt-cache麦迪逊msodbcsql
  3. apt-get安装msodbcsql = 13.1.9.2-1
  4. apt-cache madison mssql-tools
  5. ACCEPT_EULA = Y易于安装mssql-tools = 14.0.6.0-1
  6. apt-mark持有mssql-tools
  7. apt-mark保持msodbcsql

我从以下链接获得了此解决方案:

https://github.com/Microsoft/msphpsql/issues/684


dan*_*001 7

仅针对那些在Ubuntu 18.04上遇到相同问题并来到这里但尚未通过可接受的答案解决问题的用户,因为它的目标是Ubuntu 16.04,共享了另一个可能的解决方案,并已通过Python的Ubuntu 18.04 docker容器进行了测试3.6应用程序依赖于Microsoft的odbc驱动程序。

步骤1:检查库依赖关系

使用命令ldd检查是否满足所有库依赖关系。在我的环境中,缺少的库是libssl1.0.0libgssapi-krb5-2。下面是该命令及其缺少依赖项的输出示例,如果需要,请grep输出not found

$ ldd /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.2.so.0.1 

libfoo.so => /path/to/lib/foo/libfoo.so
libbar.so => /path/to/lib/bar/libbar.so
libbaz.so => not found
Run Code Online (Sandbox Code Playgroud)

步骤2:检查谁提供了缺少的依赖关系

使用dpkg search检查哪个包提供缺少的依赖项。

$ dpkg -S libbaz.so

libbaz:amd64: /usr/lib/x86_64-linux-gnu/libbaz.so.1.2.3,
Run Code Online (Sandbox Code Playgroud)

步骤3:安装缺少的依赖项

$ sudo apt install libbaz
Run Code Online (Sandbox Code Playgroud)