カテゴリー
PHP

MySQLにおけるlocalhostの罠

O’REILLYの実践ハイパフォーマンスMySQLで知ったのだが、MySQLのクライアントライブラリは接続先のホストにlocalhostを指定するとtcpではなく(勝手に)socketを利用して接続するようだ。

で、この仕様の何が問題かというと、クライアントライブラリにデフォルトで設定されているsocketのパスと、実際にインストールされているMySQLのsocketのパスが違う場合、この方法では接続できないのだ。(当たり前)

hostsで127.0.0.1がlocalhostになっていれば

mysql://user:password@127.0.0.1/hoge

で回避できる。

そうじゃない場合は、もう正しいsocketのパスをDSNに含めるしかない。

謎挙動やめてくださいよ!迷惑なんですよ!

作成者: halt

PHPプログラマ。