CakePHP3のDB接続でMySQLソケットのパスを設定

スポンサーリンク

CakePHP 3 のチュートリアルをやっていたら、データベース(MySQL)に接続できないエラーが発生しました。原因は MySQL のソケットの場所を、config/app.php の Datasources に指定していなかったため。

ブックマークチュートリアル — CakePHP Cookbook 3.x ドキュメント

— 環境 —
CakePHP 3.1.1
PHP 5.5.19
MySQL 5.6.19
Mac OS X Yosemite

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

マイグレーションでDB接続のエラー発生

CakePHP 3 ではデフォルトでマイグレーションが使えるようになっています。Phinx というマイグレーション用ライブラリがデフォルトでバンドルされていて、Rails と同じような感じで DB のマイグレーションを行える。

Migrations — CakePHP Cookbook 3.x ドキュメント
Phinx

それで、マイグレーションファイルを作成後、マイグレートを実行したところ以下のエラーが発生。

とエラーメッセージが出ていたので、MySQL の接続情報でどこか間違いがあるのだろうなと予測しました。まず、MySQL のDB名、ユーザー名、パスワード、ポートなどの設定に間違いがないかを確認しました。CakePHP での DB 接続情報の設定については以下参考。

Database 設定 – ブックマークチュートリアル — CakePHP Cookbook 3.x ドキュメント

config/app.php の Datasources に MySQL ソケットのパスを指定して解決

既存の DB 設定が正しいことを確認後、おそらく MySQL ソケットの読み込みがエラーの原因じゃないかと当たりを付けて、Phinx のドキュメントにあたってみました。上記の CakePHP 公式ページにはソケット指定について記述がなかったですので。

Configuration — Phinx 0.4.6 documentation

Phinx のドキュメントに unix_socket 指定の方法があったので、それを真似て config/app.php に追加して試す。

config/app.php

の行を追加して、MySQL のソケットのパスを指定しました。結論から言うとこれが正解で、上手く MySQL データベースに接続できるようになった。

マイグレーションやり直し

Datasources に MySQL ソケットの場所を指定した後に、もう一度マイグレーションを実行。

今度は上手く行きました。CakePHP はバージョンが 3 になってかなり使いやすくなっている印象。これまでのところ、ほとんど Rails と同じ感覚で使える感じです。

スポンサーリンク
私は Ruby on Rails の前は、PHP & CakePHP を使っていました(今も使いますけど)。PHP についてはオライリーの本を中心に軽く10冊以上は読み込みました。
 
スポンサーリンク

Leave Your Message!