web-dev-qa-db-fra.com

Comment installer les pilotes sqlite3 ODBC avec unixODBC?

Selon la page des pilotes nixODBC (tout droit sortie des années 90), je devrais télécharger les pilotes SQLite3 à partir de: http://www.ch-werner.de/sqliteodbc

Les instructions pour construire sqliteodbc à partir du code source fourni sur cette page sont disponibles ici: http://www.ch-werner.de/sqliteodbc/html/index.html

Selon cette page, nous devrions décompresser la source dans un répertoire, puis exécuter les commandes suivantes:

1) ./configure 2) make 3) make install

Cependant, lorsque je lance ./configure dans le répertoire, le message d'erreur suivant s'affiche:

configure: error: No usable SQLite header/library on this system

Que devrais-je faire?

4
user390136

Pour traiter configure: error: No usable SQLite header/library on this system, il faut:

Sudo apt-get install libsqlite3-dev

Vous pouvez toujours obtenir l'erreur suivante après cela:

configure: error: ODBC header files and/or libraries not found

Dans ce cas, faites-vous:

Sudo apt-get install unixodbc-dev unixodbc-bin unixodbc

Certains des packages sont peut-être déjà répertoriés, mais si vous obtenez une erreur, il vous manque unixodbc-dev.

Bon, maintenant vous devriez:

1) ./configure && make sans problèmes

2) au lieu de make install consultez les instructions ici pour tout savoir sur checkinstall: j’ai installé un programme en obtenant son code source, puis en exécutant `Sudo make install`; comment faire `apt-get` le sait?

Maintenant, si vous lisez plus loin dans les [instructions] fournies pour le pilote sqliteodbc, nous devons:

1) configurer correctement odbcinst.ini

Ouvrez le odbcinst.ini dans un éditeur (vous aurez probablement besoin des capacités de superutilisateur, et vous aurez besoin de savoir où se trouve le fichier - habituellement, il se trouve dans/etc, donc nous pouvons faire: Sudo gedit /etc/odbcinst.ini), et ajoutez ce qui suit:

[SQLite3]
Description=SQLite ODBC Driver
Driver=/usr/local/lib/libsqlite3odbc.so
Setup=/usr/local/lib/libsqlite3odbc.so
Threading=4

Configurez Description avec la chaîne de votre choix, mais assurez-vous que Driver et Setup ont le bon chemin d'accès au *.so fourni par le pilote sqliteodbc. . Afin de déterminer/confirmer quels *.so ont été fournis: soit grep ou tout simplement ouvrir /usr/local/lib/ et vérifiez quels fichiers *.so vous avez. Par exemple, conformément à l'exemple de l'instruction, vous devriez indiquer /usr/local/lib/libsqliteodbc.so, mais je n'avais que /usr/local/lib/libsqlite3odbc.so. Si vous avez les deux, vous pouvez faire deux entrées comme ceci:

[SQLite3]
Description=SQLite ODBC Driver
Driver=/usr/local/lib/libsqlite3odbc.so
Setup=/usr/local/lib/libsqlite3odbc.so
Threading=2

[SQLite]
Description=SQLite ODBC Driver
Driver=/usr/local/lib/libsqliteodbc.so
Setup=/usr/local/lib/libsqliteodbc.so
Threading=2

Assurez-vous également de choisir une valeur décente pour le filetage. Par exemple, si vous avez 8 cœurs, peut-être que Threading=4 aura un sens.

Dans l’intérêt de l’étape 2, je vais configurer les choses comme suit:

[MYGOOFYSQLITE3DRIVERTAG]
Description=SQLite ODBC Driver
Driver=/usr/local/lib/libsqlite3odbc.so
Setup=/usr/local/lib/libsqlite3odbc.so
Threading=2

2) facultatif: configurez un DNS dans ~/.odbc.ini --- suivez simplement les instructions, mais notez que vous pouvez également utiliser SQLite/3 DNS-less. Par exemple, en utilisant pyodbc et Python:

import pyodbc

connection_string = "Driver=MYGOOFYSQLITE3DRIVERTAG;Database=/path/to/database.db"
connection = pyodbc.connect(connection_string)

Notez que pour la touche Driver, j'ai fait référence à la balise que j'ai donnée au pilote dans odbcinst.ini. Peut-être que vous voulez être maladroit, peut-être que non - le fait est que la clé dépend de ce que vous avez configuré, ou de ce qu'un autre programme a automatiquement configuré, donc si vous avez besoin de savoir comment s'appelle le pilote, regardez-le. dans odbcinst.ini.

Pour plus de détails sur ce qui peut aller dans la chaîne de connexion, veuillez vous reporter aux instructions du pilote sqliteodbc dont nous avons déjà parlé.

4
user390136