Usando o SQLite3 com o Cygwin

6

Estou tentando usar o shell de comando sqlite3.exe com um terminal mintty no cygwin. Eu tentei o programa a partir de um prompt de comando do Windows e funciona. Quando eu tento usá-lo no terminal cygwin mintty parece que o programa trava. Eu posso ver os parâmetros e a versão. É como se ele parasse de gravar no terminal quando eu executasse o shell.

Alguém já teve esse problema antes e, em caso afirmativo, como você o corrigiu? 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

Aqui é onde ele trava. Abaixo estão as versões de alguns dos softwares relevantes.

~>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 : Quando executo o programa a partir da linha de comando do windows, o programa funciona. Isso é o que eu devo ver:

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

Quando executo o comando no cygwin ele nunca entra no shell; parece desligar e eu tenho que CTRL + C para matá-lo e voltar para o prompt de comando bash.

    
por jmq 04.03.2011 / 04:59

4 respostas

10

O programa não-Cygwin interativo geralmente não funciona corretamente nos terminais Cygwin, como o mintty, que são baseados em dispositivos pseudo-terminais ("pty"). Isso porque o Cygwin usa os canais do Windows para emular os ptys, portanto, o programa nativo do console vê um canal onde eles esperam ver um console. Entre outros problemas, isso faz com que eles entrem no modo não interativo. Veja aqui muito mais sobre isso:

link

Você pode conseguir que ele funcione de forma aceitável usando a opção -interactive , mas a solução real é instalar a versão do sqlite3 do Cygwin no Cygwin setup.exe .

    
por 04.03.2011 / 05:48
2

Inicie o Cygwin com o comando

C:\cygwin\Cygwin.bat

em vez de

C:\cygwin\bin\mintty.exe
    
por 10.03.2013 / 08:29
0

Não tenho certeza se estou entendendo.

 ~>sqlite3

Ele "trava" após o segundo ~ > sqlite3?

Nesse ponto, você não está mais executando o sqlite3, está? Ele retornou para um prompt. Inicialmente, tudo que você fez foi mostrar sua ajuda, & o programa foi encerrado. Digite sqlite3.exe, sozinho, ou forneça um db para abrir, como sqlite3.exe places.sqlite. Então o programa permanecerá aberto aguardando seus comandos.

(Eu não tenho conhecimento de cygwin ou mintty, então isso pode estar me jogando fora?)

    
por 04.03.2011 / 05:26
0

A menos que você precise especificamente que o SQLite funcione no Cygwin, o driver ODBC do SQLite para Windows pode ser uma opção melhor. Ele permite acesso nativo do Windows a bancos de dados SQLite por meio do ODBC, de modo que programas como o OpenOffice Base e o Microsoft Access, assim como muitos outros, podem se conectar e usá-los.

    
por 04.03.2011 / 05:37