我经常在 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
. 是一个在Emacs 源代码process-send-region
中调用 的 C 函数。send_process
src/process.c
看起来这可能只是 IPC 管道上的 4k 缓冲区产生的限制。由于看起来内核黑客对于改变这个大小是必要的,所以这不是一个很好的答案。
我想我很困惑的是,如果通过管道发送的 SQL 大于 4k,为什么 mysql 客户端无法正确重新组装它。有任何想法吗?
Emacs 版本: GNU Emacs 23.3.1 (x86_64-pc-linux-gnu, GTK+ Version 2.24.10) of 2012-03-25 on allspice,由 Debian 修改
mysql -V:mysql Ver 14.14 Distrib 5.5.24,适用于使用 readline 6.2 的 debian-linux-gnu (x86_64)
Sql Mysql 选项:-A -C -n (注意我已经尝试过使用和不使用 -n(无缓冲),但都没有解决这个问题)