TL;DR
- 何も設定しなくても食うけど、
[client]
セクションしか読んでくれないので「読んでない」と思われることが多いっぽい - それ以外のセクションを食わせるためには
~/.innotop/innotop.conf
に記述が必要だけど割と簡単だよ
innotop はPerl5製で DBD::mysql を使っているので、デフォルトファイルの読み込みは mysql_read_default_file と mysql_read_default_group あたりに影響を受ける。
…と思って探してみれば割とさっくり見つかって、
- https://github.com/innotop/innotop/blob/master/innotop#L66
- https://github.com/innotop/innotop/blob/master/innotop#L221-L225
- https://github.com/innotop/innotop/blob/master/innotop#L7725-L7735
あたりがそうなんだけど前後を読んでみるとどうも コマンドラインオプションからこれらを直接指定する方法はない
じゃあどうやって指定するかというと、「コンフィグファイルからコネクションのDSNを読みだそうとして、読み出せなければ渡されたオプションとかからDSNを作って
mysql_read_default_group=client
をくっつけて使う」ような作りになっているので、そもそもコンフィグファイルに好きなセクションを読みだすような(そして、それだけの) DSNを作ってやれば上手くいきそう。
(俺の手元では、何故か innotop.conf の先頭をからっぽの行にしてやらないとダメだった…)
というわけで、
$ cat ~/.innotop/innotop.conf
[connections]
test=dsn=dbi:mysql:;mysql_read_default_file=/home/yoku0825/hoge.cnf
こんな感じに書くと、
/home/yoku0825/hoge.cnf
の [client]
セクションを読むし( mysql
コマンドラインクライアントの --defaults-file
と同じで、ファイルを指定するとそれ以外のデフォルトパスのコンフィグは読まない)$ cat ~/.innotop/innotop.conf
[connections]
test=dsn=dbi:mysql:;mysql_read_default_group=innotop
こんな感じに書くと(
mysql_read_default_file
を指定していないので) /etc/my.cnf
, /usr/local/mysql/my.cnf
, .., ~/.my.cnf
, ~/.mylogin.cnf
の順で [innotop]
セクションを読むようになる。
もちろん両方同時に指定しても動く。
しかしあの、この動作を調べてたらこんなの(
DBD::Pg
をサポートしようとする努力) を見つけたんだけど、 maakitの名残 みたいだった。歴史を感じる。
0 件のコメント :
コメントを投稿