- ベストアンサー
CakePHPのデータベース接続エラーについて
- Mac OS X 10.9.5のMAMP環境でCakePHPのデータベース接続エラーが発生しています
- database.phpとphp.iniの設定を変更しましたが問題は解決されていません
- 初心者のため、詳しい方の助けを求めています
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず、順番に検証必要でしょう。 まずは、 php, phpmyadmin , mysqlサーバー のそれぞれのversion確認 phpMyAdminでの接続は、最新版なら mysqliクラスのはずだけど、そこはどのようになってますか?わざわざmysql関数に書き換えたりしてないよね? インストールしたmampディレクトリー下の phpmyadmin/config.inc.php 内の以下の行チェック $cfg['Servers'][$i]['extension'] = 'mysqli'; で、phpMyAdminで接続できると云うことは、php.iniのmysqli 接続設定はそのときのままでよいということ。php.ini書き換えてphpMyAdminすら繋がらなくなったりしてないかな? まずは php.ini をもどして apache 再起動。(これが解らなくなっていたら、mampを再インストールして初期値に戻す方が早いかも??) で、そのときの php.ini の mysqli 用設定で以下の項目を調査。 mysqli.default_port = 3306 mysqli.default_socket = "MySQL" ;; これは、windows のサービス登録のばあい。mac 用はmac 用の記述がすでに php.ini に記載されていたはず ;; mysqli.default_host = → cakePHP はdatasourceの記述からすると version 2 以降だよね? 1.3時代と記述方法が違うし、cakePHP1.3時代の情報がかなり引っかかるので情報のversionもよく確認のこと。 cakePHP2.xではpdo 接続なので、socket 接続なら socket キー指定必須 // 以下 database.php記述: propaty 設定部分のみ 抜粋 public $default = array( 'datasource' => 'Database/Mysql', 'port' => 3306, /* php.ini のmysqli.default_port の値 */ 'socket'=> 'MySQL', /* php.ini のmysqli.default_socket の値を転記(大文字小文字も間違わずに転記のこと), 空欄なら、このキー省略 */ 'host' => 'localhost', /* または、'127.0.0.1' 、 php.ini のmysqli.default_hostが空欄なら、このキー省略 */ /* その他 login , password , database , encoding , prefix キーを適宜設定 */ };
その他の回答 (2)
- sanzero
- ベストアンサー率56% (58/102)
database.phpにリネームしていないとか? ターミナルからDBには繋げられるんですよね。 下記にしてみたらどうかという情報もありました。 class DATABASE_CONFIG { var $default = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'port' => '/Applications/MAMP/tmp/mysql/mysql.sock', // here is the key ! 'login' => 'you', 'password' => 'yourpass', 'database' => 'yourdb', 'prefix' => '', ); hostを127.0.0.1にしてはどうかという情報もありました。 WindowsユーザなのでMacはあまり詳しくないのですが、試してみてはいかがでしょう。
お礼
リネームというのは、database.phpという名前にするという事ですよね? それは大丈夫でした。 host127.0.0.1にしたり、上記の設定もやってみましたが、 別のエラーが出て上手く行きませんでした。 m(__)m お忙しい所 調べて頂いた様で本当にありがとうございました。
- sanzero
- ベストアンサー率56% (58/102)
データベースは作成しましたか? データベースの作成内容(host, user, password, database名) とdatabase.phpの内容を教えてください。
お礼
お忙しい所ありがとうございます。
補足
>sanzeroさん ありがとうございます。詳細が足らずすみません。 データベースは phpMyAdminからfirstcakeという名前のものを作りました そちらではユーザーやパスワードを設定しなかったので (phpMyAdminでフォルダと照合順序の設定のみ) MAMPのスタートページにあるものを設定しました。 database.phpの内容は以下になります: class DATABASE_CONFIG { public $default = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'root', 'password' => 'root', 'database' => 'firstcake', 'prefix' => '', 'encoding' => 'utf8', ); }
お礼
ご教示感謝致します。 $cfg['Servers'][$i]['extension'] = 'mysqli'; というのがなくて、php.iniが間違っているのかと思い とりあえずMAMPを再インストールをしました。 (MAMPバージョン)3.0.7.3をインストールし、PHPは5.6.2 / MySQLは5.6 phpMyAdminは5.6.2です。 新しくインストールした中の、php.iniのファイルがmysql.default_port (mysql)となっているのですが、 これではダメという事でしょうか....? 遅い返答の上、初心者のため理解に乏しく申し訳ありません。 ありがとうございました。