我经常在Emacs的sql-mysql模式中遇到麻烦,我想知道是否有解决方法或更好的解决方法。每当我尝试从sql-mode缓冲区将查询发送到活动的SQL进程缓冲区时,该查询不能超过4k。如果它大于4k,似乎会插入某种断点 - 可能是换行符 - 这会导致mysql解释器在以下行上报错。
sql-mysql由sql.el实现,并使用函数sql-send-region将查询区域(或整个缓冲区)发送到所选的SQL进程缓冲区。 sql-send-region调用comint-send-region,后者又调用process-send-region。 process-send-region是一个C函数,它调用Emacs源码中的src/process.c中的send_process。
看起来这可能只是IPC管道上4k缓冲区产生的限制。由于似乎需要进行内核编写才能更改此大小,因此这不是一个很好的答案。
我猜困惑的原因是如果通过管道发送的SQL大于4k,则mysql客户端为什么无法正确地重新组合它。有什么想法吗?
Emacs版本:GNU Emacs 23.3.1(x86_64-pc-linux-gnu,GTK + Version 2.24.10)于2012-03-25在allspice上修改的Debian
mysql-V:mysql Ver 14.14 Distrib 5.5.24,用于debian-linux-gnu(x86_64),使用readline 6.2
Sql Mysql选项:-A -C -n(注意我尝试过有或没有-n(未缓冲),两者都无法解决此问题)
sql-mysql由sql.el实现,并使用函数sql-send-region将查询区域(或整个缓冲区)发送到所选的SQL进程缓冲区。 sql-send-region调用comint-send-region,后者又调用process-send-region。 process-send-region是一个C函数,它调用Emacs源码中的src/process.c中的send_process。
看起来这可能只是IPC管道上4k缓冲区产生的限制。由于似乎需要进行内核编写才能更改此大小,因此这不是一个很好的答案。
我猜困惑的原因是如果通过管道发送的SQL大于4k,则mysql客户端为什么无法正确地重新组合它。有什么想法吗?
Emacs版本:GNU Emacs 23.3.1(x86_64-pc-linux-gnu,GTK + Version 2.24.10)于2012-03-25在allspice上修改的Debian
mysql-V:mysql Ver 14.14 Distrib 5.5.24,用于debian-linux-gnu(x86_64),使用readline 6.2
Sql Mysql选项:-A -C -n(注意我尝试过有或没有-n(未缓冲),两者都无法解决此问题)