SQLite3 mit Cygwin verwenden

10307
jmq

Ich versuche, die Befehlsshell sqlite3.exe mit einem Mintty-Terminal in cygwin zu verwenden. Ich habe das Programm von einer Windows-Eingabeaufforderung aus versucht und es funktioniert. Wenn ich versuche, es vom cygwin mintty-Terminal aus zu verwenden, scheint das Programm zu hängen. Ich kann die Parameter und die Version sehen. Es ist, als würde es aufhören, auf das Terminal zu schreiben, wenn ich die Shell starte.

Hat jemand anderes dieses Problem schon einmal gehabt und wenn ja, wie haben Sie es behoben? 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 

Hier hängt es. Nachfolgend sind die Versionen einiger relevanter Software aufgeführt.

~>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. 

BEARBEITEN : Wenn ich das Programm von der Windows-Befehlszeile aus laufe, funktioniert das Programm. Das sollte ich sehen:

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 

Wenn ich den Befehl in cygwin ausführte, tritt er niemals in die Shell ein. Es scheint, als würde ich auflegen, und ich muss STRG + C drücken, um es zu beenden und zur Bash-Eingabeaufforderung zurückzukehren.

7

4 Antworten auf die Frage

10
ak2

Interaktive Programme, die nicht von Cygwin stammen, funktionieren in Cygwin-Terminals, wie z. B. mintty, die auf Pseudo-Terminals ("pty") basieren, häufig nicht ordnungsgemäß. Das liegt daran, dass Cygwin Windows-Pipes zum Emulieren von ptys verwendet. Das native Konsolenprogramm sieht also eine Pipe, in der sie eine Konsole erwartet. Dies führt unter anderem dazu, dass sie häufig in den nicht interaktiven Modus wechseln. Sehen Sie hier mehr darüber:

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

Möglicherweise können Sie mit dem -interactiveSwitch erträglich arbeiten. Die eigentliche Lösung ist jedoch die Installation der Cygwin-Version von sqlite3 über Cygwin setup.exe .

Ich konnte es durch das Herunterladen der nativen Build-Version über Cygwin (Ihre zweite Option) zum Laufen bringen. Ich habe nicht einmal über diese Option nachgedacht. Danke für die großartige Erklärung, warum es nicht funktioniert. Ich habe das erste auch probiert, und es hat irgendwie funktioniert (wie du schon erwähnt hast). Es schien eine "Verzögerung" zu geben, bei der Informationen in Bildschirmen ausgegeben wurden, nachdem Sie einen bestimmten Schwellenwert für Zeichen überschritten hatten. Danke noch einmal. jmq vor 13 Jahren 0
Bitte. Diese Ausgabeverzögerung ist in der Tat auf die Pufferung zurückzuführen: Standardmäßig werden Ausgabeströme beim Anschließen an eine Konsole nicht gepuffert, beim Anschließen an eine Pipe jedoch vollständig gepuffert. ak2 vor 13 Jahren 0
2
Chentuo

Starten Sie Cygwin mit dem Befehl

C:\cygwin\Cygwin.bat 

anstatt

C:\cygwin\bin\mintty.exe 
Ich finde das nicht richtig. Wenn Sie cygwin auf die eine oder andere Weise starten, hat dies keinen Einfluss auf die Interaktion des Programms mit Eingabe / Ausgabe. Dies ist der Grundfall, wie oben von ak2 erläutert. Miserable Variable vor 6 Jahren 0
Für mich hat es das Problem gelöst, also könnte es * wenigstens * richtig sein. ;-) Bowi vor 6 Jahren 0
0
therube

Ich bin mir nicht sicher, ob ich verstehe.

 ~>sqlite3 

Es "hängt" nach dem zweiten ~> sqlite3?

Zu diesem Zeitpunkt betreiben Sie nicht mehr sqlite3, oder? Es ist zu einer Eingabeaufforderung zurückgekehrt. Anfangs mussten Sie nur die Hilfe anzeigen und das Programm wurde beendet. Geben Sie entweder sqlite3.exe ein, oder geben Sie eine zu öffnende Datenbank an, wie sqlite3.exe places.sqlite. Dann bleibt das Programm geöffnet und wartet auf Ihre Befehle.

(Ich habe keine Kenntnis von Cygwin oder Mintty, so dass mich das abwerfen könnte?)

Ich gebe "sqlite3" an der Eingabeaufforderung von cygwin bash ein und das Programm hängt einfach. Ich muss STRG + C verwenden, um zu beenden und zur Eingabeaufforderung zurückzukehren. Wenn es anfängt zu laufen, passiert nichts. jmq vor 13 Jahren 0
0
amphetamachine

Wenn Sie nicht unbedingt SQLite für Cygwin benötigen, ist der SQLite ODBC-Treiber für Windows möglicherweise eine bessere Option. Es ermöglicht Windows-nativen Zugriff auf SQLite-Datenbanken über ODBC, sodass Programme wie OpenOffice Base und Microsoft Access sowie viele andere Verbindungen herstellen und verwenden können.