自宅のローカルマシン(Mac)でローカルサーバー環境を作って、CakePHP開発を行おうと思ったのですが、いろいろエラーが出てしまったのでメモ。
Mac OS X にて、MAMPをインストールし、ローカルWEBサーバ+PHP+MySQLの環境を作りました。
そこでCakePHPを開発しようと思い、CakePHP1.2を入れてみたのですが、bakeからMySQLに接続できない。。。
まず、CakePHPを各種設定ファイル(core.php、database.php)を設定し、ページを開いたら、きちんと、
Cake is able to database.
と表示されます。
しかし、
# php cake.php bake
とbakeでモデルを作ろうと思うと、MySQLに接続できないのです。
まずは一つ目のエラー。
Use Database Config: (test/default) [default] > Warning: mysql_connect(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /wwwroot/rnd-aff/cake/libs/model/datasources/dbo/dbo_mysql.php on line 118 Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /wwwroot/rnd-aff/cake/libs/model/datasources/dbo/dbo_mysql.php on line 123 Warning: mysql_get_server_info(): supplied argument is not a valid MySQL-Link resource in /wwwroot/rnd-aff/cake/libs/model/datasources/dbo/dbo_mysql.php on line 131 Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /wwwroot/rnd-aff/cake/libs/model/datasources/dbo/dbo_mysql.php on line 153 Error: Your database does not have any tables.
というエラーが出た。
解決方法としては、
# ln -s /Application/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock
とやったらいいらしい。
で、もう一つのエラー。
Use Database Config: (test/default) [default] > Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in /wwwroot/rnd-aff/cake/libs/model/datasources/dbo/dbo_mysql.php on line 118 Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /wwwroot/rnd-aff/cake/libs/model/datasources/dbo/dbo_mysql.php on line 123 Warning: mysql_get_server_info(): supplied argument is not a valid MySQL-Link resource in /wwwroot/rnd-aff/cake/libs/model/datasources/dbo/dbo_mysql.php on line 131 Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /wwwroot/rnd-aff/cake/libs/model/datasources/dbo/dbo_mysql.php on line 153 Error: Your database does not have any tables.
この「Client does not support authentication protocol requested by server」というのは、パスワード暗号化の互換性で起きる問題ということらしい。
なので、以下のコマンドで解決するとのこと。
# SET PASSWORD FOR root@localhost = OLD_PASSWORD('password_str');
あと、他の解決方法としては、cakeのデータベース設定ファイル「database.php」にて、
var $default = array('driver' => 'mysql',
'connect' => 'mysql_connect',
'host' => 'localhost',
'login' => 'dbuser',
'password' => 'dbpassword',
'database' => 'databasename',
'prefix' => '');
とするところを、
var $default = array('driver' => 'mysql',
'connect' => 'mysql_connect',
'host' => '127.0.0.1',
'login' => 'dbuser',
'password' => 'dbpassword',
'database' => 'databasename',
'prefix' => '');
とループバックアドレスにする。もしくは、
var $default = array('driver' => 'mysql',
'connect' => 'mysql_connect',
'host' => '127.0.0.1:3306',
'login' => 'dbuser',
'password' => 'dbpassword',
'database' => 'databasename',
'prefix' => '');
と、ポートまで指定すると動くらしい。
検索したサイトではこれらの解決方法で動いたらしいが、私の環境ではどれをやっても動かなかった。。。
なので、あきらめて、セカンダリーサーバーのLinuxでコンソール使ってしこしこ開発しますです。。。(^^;)
- 参考URL
関連記事
- Newer: cakephp1.2の「__()関数」って使う?
- Older: Web言語のコメントアウト記法
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://www.multiburst.net/sometime-php/2008/08/mampcakephp12bakesql/trackback/
- Listed below are links to weblogs that reference
- MAMP環境CakePHP1.2のbakeでSQL接続エラー from Sometime PHP
Additional comments powered by BackType





