Я часто сталкивался с раздражением в режиме Emacs sql-mysql
, и мне интересно, есть ли у кого-нибудь решение или лучший обходной путь. Каждый раз, когда я пытаюсь отправить запрос из буфера sql-mode
в активный буфер процесса SQL, этот запрос не может быть больше 4 КБ. Если он больше 4 КБ, кажется, что вставлен какой-то разрыв -, возможно, новая строка -, и это заставляет интерпретатор mysql выдавать ошибку на следующей строке.
sql-mysql
реализуется sql.el
и использует функцию sql-send-region
для отправки областей запроса (или целых буферов )в выбранный буфер процесса SQL. sql-send-region
вызывает comint-send-region
, который, в свою очередь, вызывает process-send-region
. process-send-region
— это функция C, которая вызывает send_process
, как в src/process.c
, так и в исходном коде Emacs.
Похоже, это может быть просто ограничение, вызванное буфером 4k на канале IPC. Поскольку кажется, что для изменения этого размера необходимо взломать ядро, это не лучший ответ.
Что, я думаю, меня озадачивает, так это то, почему SQL, отправленный через канал, не собирается должным образом клиентом mysql, если он больше 4 КБ. Любые идеи?
Версия Emacs :GNU Emacs 23.3.1 (x86 _64 -pc -linux -gnu, GTK+ Версия 2.24.10 )от 2012 г. -03 -25 на душистый перец, модифицированный Debian
mysql -V :mysql Ver 14.14 Distrib 5.5.24, для debian -linux -gnu (x86 _64 )с использованием readline 6.2
Параметры Sql Mysql:-A -C -n (NB Я пробовал как с -n (, так и без буферизации ), и ни один из них не решил эту проблему)