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

sqlcmd not able to find a library (libmsodbcsql-17.0.so.1.1) that is there

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

vm-dev:~$ sudo sqlcmd -S my-db.url.net -d my-db

我不断收到此错误:

Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Can't open lib '/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.0.so.1.1' : file not found.

但文件显然在那里:

vm-dev:~$ ls /opt/microsoft/msodbcsql17/lib64/

libmsodbcsql-17.0.so.1.1

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

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

我从这个link得到了这个解决方案:

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

我留下这个对我有用的脚本。

我的问题与您的问题非常相似,我测试了所有选项,例如更改驱动程序位置、制作符号 link、修改 /etc/*.ini 文件等...都没有用。

我的问题,运行ning python 3.6,来自 alpine 的 docker 容器中的 pyodbc 包是库 libssl1.0.0

在这里你会发现 my installation script for pyodbc Debian 8 (alpine) docker image 使用驱动程序 v13

DRIVER={ODBC Driver 13 for SQL Server}

我 运行 用于数据库连接的命令是:

import pyodbc
connection_string = 'DRIVER={ODBC Driver 13 for SQL Server};'
connection_string += 'SERVER={0};DATABASE={1};UID={2};PWD={3};'.format(host,dbname,user,pwd)
connection = pyodbc.connect(connection_string)

仅供那些在 Ubuntu 18.04 遇到同样问题并来到这里但没有通过接受的答案解决问题的人,因为它针对 Ubuntu 16.04,分享另一个可能的解决方案,使用 Ubuntu 18.04 docker 容器测试依赖于 Microsoft 的 odbc 驱动程序的 Python 3.6 应用程序。

第 1 步:检查库依赖关系

如果需要,请使用命令 ldd. On my environment, the missing libraries were libssl1.0.0 and libgssapi-krb5-2. Below, an example of the command and its output with a missing dependency, 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

第 2 步:检查谁提供了缺失的依赖项

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

$ dpkg -S libbaz.so

libbaz:amd64: /usr/lib/x86_64-linux-gnu/libbaz.so.1.2.3,

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

$ sudo apt install libbaz