Utilisation de SQLite3 avec Cygwin

J'essaie d'utiliser sqlite3.exe shell de commande avec un mintty terminal dans cygwin. J'ai essayé le programme à partir d'une invite de commandes Windows et cela fonctionne. Lorsque j'essaie de l'utiliser à partir du terminal cygwin mintty, il semble que le programme se bloque. Je peux voir les paramètres et la version. C'est comme s'il cessait d'écrire sur le terminal lorsque je lance le shell.

Quelqu'un a-t-il déjà eu ce problème avant et, dans l'affirmative, comment l'avez-vous réparé? TIA.

~>sqlite3 -help Usage: C:\Windows\sqlite3.exe [OPTIONS] FILENAME [SQL] FILENAME is the name of an SQLite database. A new database is created if the file does not previously exist. OPTIONS include: -init filename read/process named file -echo print commands before execution -[no]header turn headers on or off -bail stop after hitting an error -interactive force interactive I/O -batch force batch I/O -column set output mode to 'column' -csv set output mode to 'csv' -html set output mode to HTML -line set output mode to 'line' -list set output mode to 'list' -separator 'x' set output field separator (|) -nullvalue 'text' set text string for NULL values -version show SQLite version ~>sqlite3 

C'est là qu'il se bloque. Voici les versions de certains des logiciels concernés.

 ~>uname -srv CYGWIN_NT-6.1-WOW64 1.7.7(0.230/5/3) 2010-08-31 09:58 ~>mintty --version mintty 0.9.5 (C) 2010 Andy Koppe ~>bash -version bash -version GNU bash, version 4.1.9(3)-release (i686-pc-cygwin) Copyright (C) 2009 Free Software Foundation, Inc. 

EDIT : Lorsque je lance le programme à partir de la ligne de commande Windows, le programme fonctionne. C'est ce que je devrais voir:

 C:\Users\jmquigley\workspace\apis.net\sqlite>sqlite3 SQLite version 3.7.5 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .quit 

Quand je cours la commande dans cygwin, il n'entre jamais dans le shell; Il semble raccrocher et je dois CTRL + C le tuer et revenir à l'invite de commande bash.

Le programme interactif non Cygwin ne fonctionne pas correctement dans les terminaux Cygwin tels que mintty qui sont basés sur des périphériques pseudo-terminaux ("pty"). C'est parce que Cygwin utilise les canaux Windows pour imiter les ptys, donc le programme console natif voit un tuyau où ils s'attendent à voir une console. Entre autres problèmes, cela leur fait souvent passer au mode non interactif. Voir ici pour beaucoup plus sur ceci:

http://code.google.com/p/mintty/issues/detail?id=56

Vous pourriez peut-être le faire fonctionner de manière acceptable en utilisant le commutateur -interactive , mais la solution réelle est d'installer la version Cygwin de sqlite3 via Cygwin setup.exe .

Démarrez Cygwin avec commande

 C:\cygwin\Cygwin.bat 

au lieu de

 C:\cygwin\bin\mintty.exe 

Je ne suis pas sûr de comprendre.

  ~>sqlite3 

Cela "pend" après le second ~> sqlite3?

À ce moment-là, vous ne gérez plus sqlite3 êtes-vous? Il est retourné à une invite. Initialement, tout ce que vous avez fait était de montrer son aide, et le programme a été terminé. Soit tapez sqlite3.exe, seul, soit fournissez un db pour ouvrir, comme sqlite3.exe places.sqlite. Ensuite, le programme restera ouvert en attendant vos commandes.

(Je n'ai aucune connaissance de cygwin ou mintty de sorte que cela me jette?

À moins que vous ayez besoin de SQLite pour fonctionner dans Cygwin, le pilote ODBC SQLite pour Windows peut être une meilleure option. Il permet l'accès natif de Windows aux bases de données SQLite via ODBC afin que des programmes comme OpenOffice Base et Microsoft Access, ainsi que beaucoup d'autres puissent se connecter et les utiliser.