Подтвердить что ты не робот

Печать отладочной информации из хранимой процедуры в MySQL

Есть ли способ в MySQL печатать отладочные сообщения в stdout, temptable или logfile? Что-то вроде:

  • print в SQLServer
  • DBMS_OUTPUT.PUT_LINE в Oracle
4b9b3361

Ответ 1

Вариант 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.

Ответ 2

Я обычно создаю таблицу журналов с хранимой процедурой для входа в нее. Вызовите процедуру регистрации, где это необходимо, из разрабатываемой процедуры.

Глядя на другие сообщения по этому же вопросу, это похоже на обычную практику, хотя есть несколько альтернатив.

Ответ 3

Одно из решений - просто использовать select без каких-либо других предложений.

http://lists.mysql.com/mysql/197901