MySQLにデバッグメッセージをstdout、temptable、またはlogfileに出力する方法はありますか?何かのようなもの:
- SQLServerで印刷する
- OracleのDBMS_OUTPUT.PUT_LINE
解決
オプション1:これをプロシージャに入れて、実行時に「コメント」をstdoutに出力します。
SELECT 'コメント';
オプション2:これをプロシージャに入れて、変数を標準出力に出力します。
myvarINTのデフォルトを0と宣言します。 SET myvar = 5; SELECT concat( 'myvar is'、myvar);
これにより、プロシージャの実行時にmyvarが5からstdoutに出力されます。
オプション3、tmptableと呼ばれる1つのテキスト列を持つテーブルを作成し、それにメッセージをプッシュします。
myvarINTのデフォルトを0と宣言します。 SET myvar = 5; tmptableに挿入selectconcat( 'myvar is'、myvar);
上記をストアドプロシージャに入れることができるので、書く必要があるのはこれだけです。
CALL log(concat( '値は'、myvar));
これにより、いくつかのキーストロークを節約できます。
オプション4、メッセージをファイルに記録する
outfile '/ tmp / result.txt'にログインするときに「penguin」を選択します。
このコマンドには非常に厳しい制限があります。「others」グループに作成および書き込み権限を付与するディスク上の領域にのみ、出力ファイルを書き込むことができます。/ tmpディレクトリに保存すると機能するはずです。
また、一度出力ファイルを書き込むと、それを上書きすることはできません。これは、クラッカーがWebサイトにSQLを挿入し、MySQLで任意のコマンドを実行できるという理由だけで、クラッカーがボックスをルート化するのを防ぐためです。