Есть ли способ в MySQL печатать отладочные сообщения в stdout, temptable или logfile? Что-то вроде:
-
print
в SQLServer -
DBMS_OUTPUT.PUT_LINE
в Oracle
Есть ли способ в MySQL печатать отладочные сообщения в stdout, temptable или logfile? Что-то вроде:
print
в SQLServerDBMS_OUTPUT.PUT_LINE
в OracleВариант 1: поместите это в свою процедуру, чтобы напечатать "комментарий" к stdout при его запуске.
SELECT 'Comment';
Вариант 2: поместите это в свою процедуру, чтобы напечатать переменную с ней в stdout:
declare myvar INT default 0;
SET myvar = 5;
SELECT concat('myvar is ', myvar);
Отправляет myvar is 5
в stdout при выполнении процедуры.
Вариант 3: создайте таблицу с одним текстовым столбцом под названием tmptable
и нажимайте на нее сообщения:
declare myvar INT default 0;
SET myvar = 5;
insert into tmptable select concat('myvar is ', myvar);
Вы можете поместить это в хранимую процедуру, так что все, что вам нужно было бы написать, следующее:
CALL log(concat('the value is', myvar));
Что экономит несколько нажатий клавиш.
Вариант 4, Запись сообщений в файл
select "penguin" as log into outfile '/tmp/result.txt';
Для этой команды очень тяжелые ограничения. Вы можете только написать outfile в области на диске, которые дают группе "других" возможность создавать и записывать разрешения. Он должен работать, экономя его в каталоге /tmp.
Также, как только вы напишете outfile, его нельзя перезаписать. Это делается для того, чтобы предотвратить взломщики от корневого использования вашей коробки только потому, что у них был SQL, который ввел ваш сайт и может запускать произвольные команды в MySQL.
Я обычно создаю таблицу журналов с хранимой процедурой для входа в нее. Вызовите процедуру регистрации, где это необходимо, из разрабатываемой процедуры.
Глядя на другие сообщения по этому же вопросу, это похоже на обычную практику, хотя есть несколько альтернатив.
Одно из решений - просто использовать select без каких-либо других предложений.