MySQL のストアドプロシジャの内容を確認するのは、
SHOW CREATE PROCEDURE procedure_name
がよく使われるようだが、これだと少しでも長いコードは途中で省略されて出力されるので、
非常に困る。
mysqldump で、routine だけを指定して登録されてるもの全部出してから内容を確認するしかないのか。。。
以下のような文を覚えておくと幸せになれるかもしれない。
mysqldump -t -d -n -R --skip-lock-tables -u username -p schemer > routinens.dmp
-R は、--routines と同じ、
-t は、 --no-create-info
テーブル作成情報(CREATE TABLEステートメント)を出力しない。
-d は、 --no-data
テーブルのレコード情報を出力しない。
-n は、--no-create-db
CREATE DATABASE 文を出力しない。
--skip-lock-tables は、
mysqldump がデフォルトでロックを掛けようとして、テーブルロックを掛けられなくて
mysqldump: Got error: 1449: The user specified as a definer ('xxxx'@'%') does not exist when using LOCK TABLES
が発生するのを回避するのと、
そもそも、プロシジャをダンプするのにテーブルロックを掛ける必要性がないからだ。
しかし、沢山プロシジャ、or FUNCTION が入っていると厄介で
そのようにDB設計されたシステムは、嫌なものだ。