mysqldump でプロシジャを確認する

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設計されたシステムは、嫌なものだ。