Mamp を使用した Mac OS 上の Cakephp コンソール (ベイク):データベース接続エラー
質問
私はやろうとしています シンプルな ACL 制御アプリケーション Cakephp クックブックのチュートリアル。アイデアは次のとおりです。
データベースの作成
CREATE TABLE users (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) NOT NULL UNIQUE,
password CHAR(40) NOT NULL,
group_id INT(11) NOT NULL,
created DATETIME,
modified DATETIME
);
CREATE TABLE groups (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
created DATETIME,
modified DATETIME
);
CREATE TABLE posts (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
user_id INT(11) NOT NULL,
title VARCHAR(255) NOT NULL,
body TEXT,
created DATETIME,
modified DATETIME
);
CREATE TABLE widgets (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
part_no VARCHAR(12),
quantity INT(11)
);
次に、cake Bake all コマンドを実行します。これは、問題が発生したときです。
Welcome to CakePHP v1.2.4.8284 Console
---------------------------------------------------------------
App : app
Path: /Applications/MAMP/htdocs/luis/app
---------------------------------------------------------------
---------------------------------------------------------------
Bake All
---------------------------------------------------------------
Warning: mysql_connect(): Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (2) in /Applications/MAMP/htdocs/luis/cake/libs/model/datasources/dbo/dbo_mysql.php on line 374
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /Applications/MAMP/htdocs/luis/cake/libs/model/datasources/dbo/dbo_mysql.php on line 379
Warning: mysql_get_server_info(): supplied argument is not a valid MySQL-Link resource in /Applications/MAMP/htdocs/luis/cake/libs/model/datasources/dbo/dbo_mysql.php on line 387
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /Applications/MAMP/htdocs/luis/cake/libs/model/datasources/dbo/dbo_mysql.php on line 411
Error: Your database does not have any tables.
私のデータベース構成は次のようなものです:
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'port' => 8889,
'login' => 'root',
'password' => 'root',
'database' => 'cake',
);
したがって、私はPHP v5を実行している最後のCakePHPバージョン(1.2.5)、最後のMampバージョン(1.7.2)を使用しています...何が問題なのか誰か知っていますか?
解決
次のようにして、ローカルホストの IP アドレスを使用して回避することもできます。
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'port' => 8889,
'login' => 'root',
'password' => 'root',
'database' => 'cake',
'port' => '/Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock',
);
これは、名前付きローカルホストを使用する場合、MYSQL はローカル ソケット経由で接続しようとするためです。「ポート」を介してソケットの場所を指定すると、ソケット ファイルを検索するパスが変更されます。127.0.0.1 を使用するか、何らかの IP を指定することにより、ソケットをまったく使用しない http 経由で接続するように MYSQL に指示します。
他のヒント
これはMAMP上のローカルホストのデータベースの設定の2.xバージョンである
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'USERNAME',
'password' => 'PASSWORD',
'database' => 'DATABASE',
'encoding' => 'utf8',
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock'
);
私はそれを行う方法を見つけました[OK]を、それは同じ問題を抱えている人々を助けるかもしれない:私はケーキがそれに接続することができ127.0.0.1にホストを設定します。 助けてくれてありがとう。
ケーキはソケットを見つけることができません。
、ケーキはそれがあるべきと考えてどこにあなたのソケットがある場所からシンボリックリンクを作ってみます:
のln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock
私はこの問題を抱えていました。私の現在のMAMPの1.9.xバージョンでは、私は単に私が使用することを確認してください 'ホスト' => '127.0.0.1' と => 8889「ポート」(デフォルトのmysqlのポートを変更しない限り)。
は私のために完璧に動作します。
私はWindows上でこの設定に友人を支援しています。
EasyPHPのもの内のすべての作業罰金(MySQLで接続)。 だから、CakePHPはデータベースに接続するためにPDOを使用します。
ときにモデルを生成しようとする利用BAKEを上げる:「エラー:データベース接続の 『MySQLは』不足している、または作成することができませんでした。」
コマンドラインでPHPは、彼らはPDOとMySQLの拡張せずにデフォルトの設定を見つけて取得することはできませんので、デWindowsのフォルダ内のphp.iniを探してみます。
デ・WINDOWSフォルダとベーク詰め込む内部コピーphp.iniのは、正常に動作します!