sql >> データベース >  >> RDS >> Mysql

MySQLのストアドプロシージャからデバッグ情報を出力します

    オプション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という1つのテキスト列を持つテーブルを作成します 、メッセージをプッシュします:

    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';
    

    このコマンドには非常に厳しい制限があります。 「others」グループに作成および書き込み権限を付与するディスク上の領域にのみ、出力ファイルを書き込むことができます。 /tmpディレクトリに保存すると機能するはずです。

    また、一度出力ファイルを書き込むと、それを上書きすることはできません。これは、クラッカーがWebサイトにSQLを挿入し、MySQLで任意のコマンドを実行できるという理由だけで、クラッカーがボックスをルート化するのを防ぐためです。



    1. SQLiteデータ型

    2. Postgresqlのid列の位置は重要ですか?

    3. postgresのすべてのレコードをTitlecase、最初の文字は大文字に変換します

    4. ユーザー'root'@'localhost'のアクセスが拒否されたまま-ターミナル、Mac