現場で使えるMySQL

先日の文字化け——というより文字欠けの件があってから、MySQLのそのあたりの動きをもう少し知っておこうかなと思い、マニュアルなんかにもあたってはみていたのだが、ちょうど書店に行ったので並んでいる本を比較してみた。

店頭にはMySQLについてだけを説明する本と、Apache HTTPサーバやPHPを組み合わせてインスタントなサーバ構築みたいな本とがあって、後者のほうが量としては多い。いくつかは手に取って見てみたが、これらの本はおおざっぱなこと、たとえば「SET NAMESでハッピー」みたいなことしか書いてないのが多いようだった。さすがにそれではダメなのでパスすることにして、MySQL 徹底入門 第2版MySQL徹底入門 第2版[rakuten]と現場で使える MySQL (DB Magazine SELECTION)現場で使えるMySQL[rakuten]、それにムックの超・極める!MySQL超・極める!MySQL[rakuten]を見てみることにした。店頭にあったそれ以外のMySQL本は文字コードまわりの話題にまとまったページを割いておらず、コラムなどの形で「SET NAMESで」とある程度であった。

三冊のうちで文字コードまわりの話題を平易に説明していたのは徹底入門だと思った。著者の考える基本的な指針を示しているところなどはシンプルで分かりやすいと思う。そういった易しいところだけでなく、文字コード変換がどこでどのように行われていて、各種の設定がどう効いてくるのかもきちんと説明している。skip-character-set-client-handshakeのことも書いてあって、この設定が悩みをかなり少なくしてくれる可能性が示されている。

ところが、次にムックをあたってみると「skip-character-set-client-handshakeでハッピー」というのにも制限があって、それは、たとえばmysqlコマンドの--default-charcter-setの指定が無視されるようになってしまう点だとある。同ムックではこのことが徹底入門には書かれていないとあったが、たしかに明確には書かれてなさそうだった(索引で調べられなかったので、はっきりしたことは言えないが)。つまりこのオプションはバージョン4.0の時代の挙動に戻すものであると説明されており(たしかそんなような記述だったと思う)、なるほどなと納得。改めて英語のマニュアルを読んでみるとたしかにそのように書かれていて、このあたりskip-character-set-client-handshakeも名前だけが独り歩きする状況が少しあるのかもしれない。

現場で使える〜は雑誌記事の連載をまとめたもののようで、そういった雰囲気の中でではあるが、わりにきちんとした説明があった。前述の二冊でも文字コード変換とは別にエスケープによる問題を扱っているが、そのあたりの詳細はこの本が一番だと思った。切り口としては落し穴にはまらないようにというものであり、徹底入門のようなタイプの説明とは違った分かり易さがある。binaryにしてはまる、といったような。文字コードまわりの説明も、やはり説明の仕方は違っているが、他の書箱と同様に丁寧なものだと思った。

それぞれの難点を挙げると、徹底入門はやや推奨設定を前提としている雰囲気があり、ムックでの指摘のようなところるある。また、索引が粗い印象を受けた。ムックのほうはというと記事が書き言語ではなくて話し言語で書かれている点に、少々読み難い印象を受けた。徹底入門の捕捉として読んでみても良いのではないか、とは思うのだが。現場で使える〜は、ムックのような意味でではないが、やはり連載記事がベースになっているので徹底入門のような体系的な読み易さは得られないところがある。もっとも、そういったエリアを狙った本ではないと思うので、それだから問題だということもないとは思う。

ま、そういう経緯を経て現場で使えるMySQLを買ってきた。