Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Imprimir informações de depuração do procedimento armazenado no MySQL


Opção 1:coloque isso em seu procedimento para imprimir 'comentário' em stdout quando ele for executado.
SELECT 'Comment';

Opção 2:Coloque isso em seu procedimento para imprimir uma variável com ela para stdout:
declare myvar INT default 0;
SET myvar = 5;
SELECT concat('myvar is ', myvar);

Isso imprime myvar is 5 para stdout quando o procedimento é executado.

Opção 3, criar uma tabela com uma coluna de texto chamada tmptable e envie mensagens para ele:
declare myvar INT default 0;
SET myvar = 5;
insert into tmptable select concat('myvar is ', myvar);

Você pode colocar o acima em um procedimento armazenado, então tudo o que você precisa escrever é isso:
CALL log(concat('the value is', myvar));

O que economiza algumas teclas.

Opção 4, registrar mensagens no arquivo
select "penguin" as log into outfile '/tmp/result.txt';

Há restrições muito pesadas sobre este comando. Você só pode gravar o arquivo de saída em áreas no disco que dão ao grupo 'outros' permissões de criação e gravação. Deve funcionar salvando-o no diretório /tmp.

Além disso, uma vez que você escreve o arquivo de saída, você não pode sobrescrevê-lo. Isso é para evitar que crackers façam root em sua caixa apenas porque eles injetaram SQL em seu site e podem executar comandos arbitrários no MySQL.