使用Mamp的Mac OS上的Cakephp控制台(烘焙):数据库连接错误

时间:2009-11-06 16:30:11

标签: php database cakephp macos mamp

我正在尝试在cakephp食谱中进行Simple Acl controlled Application教程。 这个想法是:

制作数据库

 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)
 );

然后运行蛋糕烘焙所有命令,这是我遇到问题的时候:

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',
);

所以我使用最后一个CakePHP版本(1.2.5),最后一个运行PHP v5的Mamp版本(1.7.2)... 有人知道这是什么问题吗?

6 个答案:

答案 0 :(得分:14)

这是MAMP上localhost的数据库配置的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'
);

答案 1 :(得分:3)

好的,我找到了一种方法,它可能会帮助那些有同样问题的人:我将主机设置为127.0.0.1,这样蛋糕可以连接到它。 谢谢你的帮助。

答案 2 :(得分:3)

你也可以通过

来使用localhost 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',
);

这是因为当使用命名的localhost时,MYSQL将尝试通过本地套接字连接。通过'port'指定套接字的位置,你可以改变查找套接字文件的路径。通过使用127.0.0.1或指定任何类型的IP,你告诉MYSQL通过http连接,它不使用套接字所有

答案 3 :(得分:1)

蛋糕找不到插座。

尝试创建一个符号链接,从你的套接字到哪里,到Cake认为它应该是:

ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

答案 4 :(得分:1)

当我搬到CakePHP时,我遇到了这个问题。在我目前的MAMP 1.9.x版本中,我只是确保使用 'host'=> '127.0.0.1'和 'port'=> 8889(除非您更改默认的mysql端口)。

完美适合我。

答案 5 :(得分:0)

我正在帮助朋友在Windows上设置此功能。

在EasyPHP内部,所有工作都很好(与Mysql连接)。 所以Cakephp使用PDO连接到数据库。

当尝试使用BAKE生成模型时:“错误:数据库连接”Mysql“丢失,或者无法创建。”

命令行上的PHP尝试在de Windows文件夹中找到php.ini,这样他们就无法找到并获得没有PDO和Mysql扩展的默认配置。

在de WINDOWS文件夹中复制php.ini并烘焙东西会正常工作!