web-dev-qa-db-fra.com

sqlcmd pas en mesure de trouver une bibliothèque (libmsodbcsql-17.0.so.1.1) qui est là

Je suis sur Ubuntu 16.04 et j'essaie d'utiliser sqlcmd lancé par programme à partir d'un script pour effectuer une requête SQL dans le cloud de la machine virtuelle.

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

Je continue à avoir cette erreur:

Sqlcmd: erreur: Microsoft ODBC pilote 17 pour SQL Server: impossible d'ouvrir Lib '/opt/Microsoft/msodbcsql17/lib64/libmsodbcsql-17.0.so.1.1': fichier pas trouvé.

Mais le dossier est clairement là:

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

libmsodbcsql-17.0.so.1.1

5
Hack-R

J'ai le même problème, cette solution a fonctionné pour moi: Vous devez rétrograder la version de msodbcsql,

  1. apt-get remove msodbcsql
  2. apt-cache madison msodbcsql
  3. apt-get install msodbcsql = 13.1.9.2-1
  4. apt-cache madison mssql-tools
  5. ACCEPT_EULA = Y apt-get install mssql-tools = 14.0.6.0-1
  6. apt-mark hold mssql-tools
  7. apt-mark hold msodbcsql

J'ai obtenu cette solution à partir de ce lien:

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

4
Diyar

Juste pour ceux qui rencontrent le même problème sur Ubuntu 18.04 et qui sont venus ici mais qui n’ont pas résolu le problème, étant donné qu’il vise Ubuntu 16.04, partage une autre solution possible, testée avec un conteneur docker Ubuntu 18.04 pour Python Application 3.6 qui repose sur le pilote odbc de Microsoft.

Étape 1: Vérifier les dépendances de la bibliothèque

Vérifiez si toutes les dépendances de la bibliothèque sont satisfaites à l’aide de la commande ldd . Sur mon environnement, les bibliothèques manquantes étaient libssl1.0.0 et libgssapi-krb5-2 . Ci-dessous, un exemple de la commande et de sa sortie avec une dépendance manquante, grep la sortie pour not found si vous voulez.

$ 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

Étape 2: Vérifier qui fournit la dépendance manquante

Vérifiez quel paquet fournit la dépendance manquante en utilisant dpkg search .

$ dpkg -S libbaz.so

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

Étape 3: Installez les dépendances manquantes

$ Sudo apt install libbaz
2
danieldeveloper001

Je laisse ce script qui a fonctionné pour moi.

Mon problème était assez similaire au vôtre et j'ai testé toutes les options, telles que changer l'emplacement du pilote, créer un lien symbolique, modifier les fichiers /etc/*.ini, etc. rien ne fonctionnait.

Mon problème, exécuter python 3.6, le paquet pyodbc dans un conteneur docker d’Alpine était la bibliothèque libssl1.0.0

Ici vous trouverez mon script d’installation pour pyodbcImage du menu fixe Debian 8 (Alpine) en utilisant le pilote v13

DRIVER = {Pilote ODBC 13 pour SQL Server}

La commande que j'ai exécutée pour la connexion à la base de données était la suivante:

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)
0
nenetto