在Windows上使用Emacs运行M-x sql-postgres

5
当我在Windows上的Emacs中尝试运行下级psql进程时,似乎没有任何响应。这似乎是一个已知问题,解决方法是安装cygwin版本的psql。不幸的是,cygwin psql似乎什么也没做,甚至psql -V也没有反应。是否有人对这些问题有解决方案或者从Emacs向PostgreSQL发送查询的简单方法?
3个回答

1

这可能不是一个好的答案,但我现在没有装有Emacs或PostGres的Windows机器,所以我无法为您找到更好的解决方案。

话虽如此,您能否在命令行中运行psql?如果可以的话,也许您可以尝试启动shell(M-x shell)或EshellM-x eshell)来启动一个下级shell,并从那里运行psql

我最初想建议您调用M-x shell-command(也可以是M-!),然后为您的命令指定psql &。&让Emacs知道您想异步运行shell命令。然而,EmacsWiki上的this entry表明它在Windows上不起作用。您可以尝试一下,看看会发生什么...


不幸的是,无论我在cygwin psql还是Windows psql中使用emacs命令行窗口运行cygwin bash或Windows命令行窗口,都会看到相同的行为。使用cygwin或Windows psql时,M-!也会发生同样的情况(&可以工作,我想这是因为我默认让emacs使用cygwin bash)。我想我只能使用我的Linux笔记本电脑来工作了。感谢您的尝试。 - deinst
如果您尝试从不在emacs内部的Windows命令Shell中运行psql,它是否有效? - A. Levy
是的,Windows 版本有,但 Cygwin 版本没有。Windows 版本的问题与缺少 readline 有关,并在认为是非交互式 shell 的情况下表现出奇怪的行为。 - deinst

1

好的,我终于弄清楚如何运行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动态链接的知识。感谢大家耐心的支持。


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)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接