2

我正在尝试在 cakephp 食谱中做简单 Acl 控制的应用程序教程。这个想法是:

制作数据库

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

所以我正在使用最后一个 CakePHP 版本(1.2.5),最后一个运行 PHP v5 的 Mamp 版本(1.7.2)......有人知道问题出在哪里吗?

4

6 回答 6

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'
);
于 2012-07-11T01:35:58.460 回答
3

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

于 2009-11-06T18:14:53.937 回答
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 会尝试通过本地套接字进行连接。通过“端口”指定套接字的位置,您可以更改它在其中查找套接字文件的路径。通过使用 127.0.0.1 或通过指定任何类型的 IP,您可以告诉 MYSQL 通过 http 连接,它不使用套接字全部。

于 2009-11-09T16:37:01.643 回答
1

蛋糕找不到插座。

尝试从你的套接字所在的位置创建一个符号链接,到 Cake 认为它应该在的位置:

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

于 2009-11-06T16:44:46.230 回答
1

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

非常适合我。

于 2011-06-23T13:07:03.813 回答
0

我正在帮助朋友在 Windows 上进行设置。

在 EasyPHP 里面的东西都可以正常工作(与 Mysql 的连接)。所以 Cakephp 使用 PDO 来连接数据库。

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

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

将 php.ini 复制到 de WINDOWS 文件夹中,然后烘烤东西就可以了!

于 2011-12-30T19:21:44.927 回答