我正在使用Ubuntu 16.04尝试使用sqlcmd
从脚本中以编程方式启动,以在VM的云中执行SQL查询。
vm-dev:~$ sudo sqlcmd -S my-db.url.net -d my-db
我一直收到这个错误:
Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程序17:无法打开 lib'/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.0.so.1.1':file 没找到。
但文件显然在那里:
vm-dev:~$ ls /opt/microsoft/msodbcsql17/lib64/
libmsodbcsql-17.0.so.1.1
答案 0 :(得分:6)
我遇到同样的问题,这个解决方案对我有用: 你必须降级msodbcsql版本,
我从此链接获得了此解决方案:
答案 1 :(得分:6)
仅针对那些在Ubuntu 18.04上遇到相同问题并来到这里但仍未通过可接受的答案解决问题的人,因为它的目标是Ubuntu 16.04,共享另一个可能的解决方案,并已通过Ubuntu 18.04 docker容器进行了测试依赖于Microsoft的odbc驱动程序的Python 3.6应用程序。
第1步:检查库依赖性
使用命令ldd检查是否满足所有库依赖关系。在我的环境中,缺少的库是 libssl1.0.0 和 libgssapi-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
第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
答案 2 :(得分:0)
我留下适用于我的脚本。
我的问题与你的问题非常相似,我测试了所有选项,例如更改驱动程序位置,制作符号链接,修改/etc/*.ini文件等等......没有任何效果。
我的问题,在alpine的docker容器中运行python 3.6,pyodbc包是库 libssl1.0.0
您可以在此处使用驱动程序v13
找到my installation script for pyodbc Debian 8 (alpine) docker imageDRIVER = {SQL Server的ODBC驱动程序13}
我为数据库连接运行的命令是:
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)