我正在尝试在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)... 有人知道这是什么问题吗?
答案 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并烘焙东西会正常工作!