如何强制mysql.exe以“交互”模式运行?

时间:2009-12-11 19:31:31

标签: mysql windows emacs cygwin

我想在windows xp中使用emacs sql-mysql模式。我能够进入sql-mysql模式并成功连接到mysql数据库。问题是 SQL 缓冲区没有显示“mysql>”提示。换句话说,它不与mysql.exe交互。

我认为这是因为mysql.exe程序在emacs幕后启动时会进入“非交互式”模式。

mysql options似乎没有任何帮助。

有关如何解决此问题的任何想法?我可以看到这对于emacs comint模式与windows中的其他命令行实用程序进行交互也是一个问题,所以也许有一个os级别的解决方案?

2 个答案:

答案 0 :(得分:3)

问题是emacs的内置终端使用管道与客户端进程通信。 Mysql.exe是本机Windows程序,因此isatty()实际检查所讨论的文件描述符/句柄是否为控制台。管道失败,因此mysql进入批处理模式。我也看不到强制交互模式的方法。羞耻,因为它可能是无足轻重的。

在基于Cygwin ptys的xterm或其他终端中运行它将显示相同的问题,因为Cygwin的pty仿真基于Windows管道。

答案 1 :(得分:1)

如果你不从(伪)终端运行它,实际上没办法。它按isatty检查文件描述符0 1,如果其中至少有一个不是终端,则设置批处理模式。另一方面,您可以强制批处理模式。

无论如何这很有意义,因为用于提示的readline需要终端合理地工作。所以解决这个问题的正确方法是在伪终端中运行它。