2009-11-06 119 views
2

我想在cakephp食谱做Simple Acl controlled Application教程。 的理念是:CakePHP控制台(烘烤)在Mac OS与Mamp:数据库连接错误

制作数据库

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

然后运行蛋糕烤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),最后一个Ma mp版(1.7.2)运行PHP v5 ... 有人知道问题是什么?

回答

3

您还可以通过执行

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时,因为将尝试通过本地套接字连接避开使用本地主机的IP地址。通过使用'port'指定套接字的位置,您可以更改它查找套接字文件的路径。通过使用127.0.0.1或通过指定任何类型的IP,您可以告诉MYSQL通过http进行连接,该套接字不使用套接字所有。

1

蛋糕找不到插座。

尝试使从您的插座是一个符号链接,到蛋糕认为它应该是:

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

+0

谢谢!我在终端上输入了你给我的那一行,但我仍然有同样的错误。我不熟悉符号链接,当我输入它时,是否必须位于特定的文件夹中? – Julien 2009-11-06 17:00:31

3

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

+0

工作?听起来很奇怪。 localhost和127.0.0.1是一样的东西。我想知道它为什么起作用 – cgr 2009-11-07 01:31:55

+0

是的,它确实...我不知道为什么! 对我来说最奇怪的是本地主机工作时,我加载蛋糕页面,但不是与控制台。所以我猜这是cake命令使用mac os PHP版本,而我的网页使用的是MAMP,它们是不同的,所以也许Mac启动MAMP时,Mac OS PHP不理解“localhost”路由。 – Julien 2009-11-07 03:28:25

+0

谢谢 - 为我工作!因为这个原因,我在OS X上烧烤已经有一段时间了。通常我在Ubuntu上开发。哦 - 我也没有使用MAMP - 只是一个家庭作业。 – Leo 2011-02-01 19:34:51

1

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

适合我。

0

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

EasyPHP内部的东西都可以正常工作(与Mysql连接)。 因此Cakephp使用PDO连接到数据库。

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

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

拷贝php.ini里的WINDOWS文件夹和烘烤东西都能正常工作!

14

这是数据库配置的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' 
); 
+0

你救了我一些严重的头痛!谢谢! – jlmmns 2013-12-20 22:23:04

+0

谢谢!很有帮助 – tshenolo 2014-02-07 04:32:21