psql
进程时,似乎没有任何响应。这似乎是一个已知问题,解决方法是安装cygwin版本的psql
。不幸的是,cygwin psql
似乎什么也没做,甚至psql -V
也没有反应。是否有人对这些问题有解决方案或者从Emacs向PostgreSQL发送查询的简单方法?psql
进程时,似乎没有任何响应。这似乎是一个已知问题,解决方法是安装cygwin版本的psql
。不幸的是,cygwin psql
似乎什么也没做,甚至psql -V
也没有反应。是否有人对这些问题有解决方案或者从Emacs向PostgreSQL发送查询的简单方法?这可能不是一个好的答案,但我现在没有装有Emacs或PostGres的Windows机器,所以我无法为您找到更好的解决方案。
话虽如此,您能否在命令行中运行psql?如果可以的话,也许您可以尝试启动shell(M-x shell
)或Eshell(M-x eshell
)来启动一个下级shell,并从那里运行psql
。
我最初想建议您调用M-x shell-command
(也可以是M-!
),然后为您的命令指定psql &
。&让Emacs知道您想异步运行shell命令。然而,EmacsWiki上的this entry表明它在Windows上不起作用。您可以尝试一下,看看会发生什么...
好的,我终于弄清楚如何运行cygwin psql了。似乎提供的cygpq.dll缺少一些入口点。
strace -o /dev/null psql --version
回应为"The procedure entrypoint PQencryptPassword could not be located in the dynamic link library cygpq.dll."
我用本地编译的cygpq.dll替换了cygwin提供的cygpq.dll,现在看起来一切都很顺利。我需要学习更多关于cygwin动态链接的知识。感谢大家耐心的支持。
我遇到了类似的问题(但无法使cygwin psql工作)。
最终,我发现M-x sql-postgres和M-x shell中的psql调用实际上都是交互式的,但没有可见的提示符;也就是说,你可以在最后一行的开头输入命令,并按预期执行。
在我意识到这一点之前,我修改了我的postgres密码文件,以避免M-x shell中psql调用的密码提示和初始挂起:
当默认设置不完全正确时,您可以通过设置环境变量PGDATABASE、PGHOST、PGPORT和/或PGUSER的适当值来节省一些打字。 (有关其他环境变量,请参见文档。)还可以方便地拥有一个~/.pgpass文件,以避免经常输入密码。有关更多信息,请参见文档。 (http://linux.die.net/man/1/psql)