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版本,
- apt-get 删除 msodbcsql
- apt-cache 麦迪逊 msodbcsql
- apt-get 安装 msodbcsql=13.1.9.2-1
- apt-cache 麦迪逊 mssql-tools
- ACCEPT_EULA=Y apt-get 安装 mssql-tools=14.0.6.0-1
- apt-mark坚持mssql-tools
- apt-mark持有msodbcsql
我从这个link得到了这个解决方案:
我留下这个对我有用的脚本。
我的问题与您的问题非常相似,我测试了所有选项,例如更改驱动程序位置、制作符号 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
我在 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版本,
- apt-get 删除 msodbcsql
- apt-cache 麦迪逊 msodbcsql
- apt-get 安装 msodbcsql=13.1.9.2-1
- apt-cache 麦迪逊 mssql-tools
- ACCEPT_EULA=Y apt-get 安装 mssql-tools=14.0.6.0-1
- apt-mark坚持mssql-tools
- apt-mark持有msodbcsql
我从这个link得到了这个解决方案:
我留下这个对我有用的脚本。
我的问题与您的问题非常相似,我测试了所有选项,例如更改驱动程序位置、制作符号 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