我正在尝试在 cygwin 中将 sqlite3.exe 命令 shell 与 mintty 终端结合使用。我尝试从 Windows 命令提示符中使用该程序,它可以正常工作。当我尝试从 cygwin mintty 终端使用它时,该程序似乎挂起了。我可以看到参数和版本。当我运行 shell 时,它好像停止写入终端。
以前有没有其他人遇到过这个问题?如果有,您是怎么解决的?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
这就是它挂起的地方。以下是一些相关软件的版本。
~>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.
编辑:当我从 Windows 命令行运行该程序时,该程序可以运行。我应该看到以下内容:
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
当我在 cygwin 中运行命令时,它从未进入 shell;它似乎挂断了,我必须使用 CTRL + C 来终止它并返回到 bash 命令提示符。
答案1
交互式非 Cygwin 程序通常无法在基于伪终端(“pty”)设备的 Cygwin 终端(如 mintty)中正常工作。这是因为 Cygwin 使用 Windows 管道来模拟 pty,因此本机控制台程序在它们期望看到控制台的地方看到了管道。除其他问题外,这通常会导致它们进入非交互模式。有关此内容的更多信息,请参见此处:
http://code.google.com/p/mintty/issues/detail?id=56
您可能能够使用开关使其正常工作-interactive
,但真正的解决方案是通过 Cygwin 安装 Cygwin 版本的 sqlite3安装程序。
答案2
使用命令启动 Cygwin
C:\cygwin\Cygwin.bat
代替
C:\cygwin\bin\mintty.exe
答案3
我不确定我是否理解了。
~>sqlite3
它在第二个 ~>sqlite3 之后“挂起”?
此时,您不再运行 sqlite3 了,对吧?它已返回提示符。最初,您所做的只是显示它的帮助,然后程序退出。要么单独输入 sqlite3.exe,要么提供要打开的数据库,例如 sqlite3.exe places.sqlite。然后程序将保持打开状态,等待您的命令。
(我对 cygwin 或 mintty 一无所知,所以这可能会让我困惑?)
答案4
除非你特别需要 SQLite 在 Cygwin 中工作,适用于 Windows 的 SQLite ODBC 驱动程序可能是更好的选择。它允许 Windows 本机通过 ODBC 访问 SQLite 数据库,以便 OpenOffice Base 和 Microsoft Access 等程序以及许多其他程序可以连接和使用它们。