当我尝试在Windows上的emacs中运行劣质psql
进程时,我似乎没有得到任何响应。这似乎是known problem,其解决方案是安装psql
的cygwin版本。不幸的是,cygwin psql
似乎绝对没有做任何事情,即使psql -V
什么都不做。有没有人能够解决这些问题或者从emacs向postgresql发送查询的简单方法。
答案 0 :(得分:1)
这可能不是一个好的答案,但我目前不在使用Emacs或PostGres的Windows机器上,所以我无法为您找到更好的解决方案。
那就是说,你能在命令shell中运行psql吗?如果是这样,也许您可以尝试启动shell(M-x shell
)或Eshell(M-x eshell
)来启动劣质shell并从那里运行psql
。
我原本打算建议你拨打M-x shell-command
(也是M-!
),然后为你的命令指定psql &
。 &
让Emacs知道你想要异步运行shell命令。但是,EmacsWiki上的this entry表示它无法在Windows上运行。无论如何你可以试试看看会发生什么......
答案 1 :(得分:1)
好的,我终于想出了如何让cygwin psql运行。似乎提供的cygpq.dll缺少一些入口点,
strace -o /dev/null psql --version
回复“过程入口点PQencryptPassword 无法找到动态链接库cygpq.dll。“
我用本地编译的cygfq.dll替换了cygwin提供的cygpq.dll,看来我们现在正在用煤气烹饪。我需要了解有关cygwin动态链接的更多信息。我感谢你们所有人的耐心支持。
答案 2 :(得分:1)
我有类似的问题(但无法使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)