私は現在、David Golding による「Beginning CakePHP: From Novice to Professional」を読んでいます。ある時点で、CLI コマンド「cake bake」を使用する必要があり、ようこそ画面が表示されますが、コントローラなどをベイクしようとすると、次のエラー メッセージが表示されます。
Warning: mysql_connect(): Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (2) in /Applications/MAMP/htdocs/blog/cake/libs/model/datasources/dbo/dbo_mysql.php on line 117
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /Applications/MAMP/htdocs/blog/cake/libs/model/datasources/dbo/dbo_mysql.php on line 122
Warning: mysql_get_server_info(): supplied argument is not a valid MySQL-Link resource in /Applications/MAMP/htdocs/blog/cake/libs/model/datasources/dbo/dbo_mysql.php on line 130
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /Applications/MAMP/htdocs/blog/cake/libs/model/datasources/dbo/dbo_mysql.php on line 154
Error: Your database does not have any tables.
エラーメッセージは、MAMPが使用するものではなく、間違ったmysql-socket、つまりデフォルトのosx mysql-socketにアクセスしようとしているphpに関係していると思われます。したがって、データベース構成を変更して、UNIX mysql-socket (:/Applications/MAMP/tmp/mysql/mysql.sock) に接続します。
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql',
'connect' => 'mysql_connect',
'persistent' => false,
'host' =>':/Applications/MAMP/tmp/mysql/mysql.sock', // UNIX MySQL-socket
'login' => 'my_user',
'password' => 'my_pass',
'database' => 'blog',
'prefix' => '',
);
}
しかし、新しいソケットでも同じエラー メッセージが表示されます。
Warning: mysql_connect(): Can't connect to local MySQL server through socket '/Applications/MAMP/tmp/mysql/mysql.sock:3306' (2) in /Applications/MAMP/htdocs/blog/cake/libs/model/datasources/dbo/dbo_mysql.php on line 117
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /Applications/MAMP/htdocs/blog/cake/libs/model/datasources/dbo/dbo_mysql.php on line 122
Warning: mysql_get_server_info(): supplied argument is not a valid MySQL-Link resource in /Applications/MAMP/htdocs/blog/cake/libs/model/datasources/dbo/dbo_mysql.php on line 130
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /Applications/MAMP/htdocs/blog/cake/libs/model/datasources/dbo/dbo_mysql.php on line 154
Error: Your database does not have any tables.
また、MAMP がようこそ画面に表示する UNIX ソケットを使用していても、ローカルホストの代わりにこのソケットを使用すると、CakePHP はデータベース接続を失います。
ベイクを機能させる方法についてのアイデアはありますか?
-- 編集 1 --
私を助けてくれてありがとう!:)
MySQL が TCP/IP 要求をリッスンするように my.cnf のどこを編集すればよいかわかりません。TCP/IP が言及されている箇所を見つけることができる唯一の段落は次のとおりです。
# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
これにより、TCP/IP を完全にオフにすることができますが、これは私の意図とは逆です。あなたが提案したことについてどうすればいいのかわかりません。もっと精巧にできれば、それは素晴らしいことです。私はこれらの問題について完全に無関心です:S
登録 ローカル ソケットへの接続: ホスト パラメータの先頭のコロンを削除しましたが、結果は同じです。