2009-11-06 4 views
2

cakephp 요리 책에서 Simple Acl controlled Application 튜토리얼을하려고합니다. 아이디어는 다음과 같습니다Mac OS에서 Mamp가있는 Cakephp 콘솔 (bake) : 데이터베이스 연결 오류

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. 

내 데이터베이스 설정은 다음과 같이이다 :

만들기 데이터베이스

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

그런 다음 케이크 모든 명령을 구워 실행, 이것이 내가 문제가있을 때

var $default = array(
    'driver' => 'mysql', 
    'persistent' => false, 
    'host' => 'localhost', 
    'port' => 8889, 
    'login' => 'root', 
    'password' => 'root', 
    'database' => 'cake', 
); 

그래서 마지막 CakePHP 버전 (1.2.5)을 사용하고 있습니다. 마지막 Ma PHP 버전 5를 실행하는 mp 버전 (1.7.2) ... 누군가가 어떤 문제인지 압니까?

답변

3

는 또한 시도하고 로컬 소켓을 통해 연결됩니다 명명 된 로컬 호스트 MYSQL을 사용하는 경우 때문입니다

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

를 수행하여 로컬 호스트의 IP 주소를 사용하여 주위를 얻을 수 있습니다. 소켓을 'port'를 통해 지정하는 방법으로 소켓 파일을 찾을 경로를 변경합니다. 127.0.0.1을 사용하거나 임의의 IP를 지정하여 MYSQL에 소켓을 사용하지 않는 http를 통해 연결하도록 지시합니다. 모든.

1

케이크가 소켓을 찾을 수 없습니다.

는, 케이크는 그것이 있어야 생각하는 곳으로 소켓이 어디에서 심볼릭 링크를 만드는 시도 :

에선 -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

+0

에 로컬 호스트에 대한 데이터베이스 설정의 2.X 버전을이 감사합니다!터미널에 저에게 준 라인을 입력했지만 여전히 같은 오류가 있습니다. 심볼릭 링크가 마음에 들지 않습니다. 입력 할 때 특정 폴더에 있어야합니까? – Julien

3

좋아, 나는 그것을하는 방법을 발견했다, 그것은 동일한 문제를 가진 사람들에게 도움이 될 것이다. 나는 케이크를 그것에 연결할 수 있도록 호스트를 127.0.0.1로 설정했다. 도움 주셔서 감사합니다.

+0

그게 효과가 있니? 이상하게 들린다. localhost와 127.0.0.1은 같은 것입니다. 나는 그것이 왜 효과가 있었는지 궁금하다. – cgr

+0

그래, 그랬지 ... 나는 왜 몰라! 나에게 가장 이상한 것은 localhost가 케이크 페이지를로드 할 때 작동하지만 콘솔과는 작동하지 않는다는 것입니다. 그래서 나는 cake 명령이 mac os PHP 버전을 사용하고 내 웹 페이지가 다른 MAMP를 사용하기 때문에 MAMP가 시작될 때 Mac OS PHP가 "localhost"라우팅을 이해하지 못할 수도 있습니다. – Julien

+0

감사합니다 - 저를 위해 너무 일했습니다! 이런 이유로 OS X에서 빵 굽는 일에 귀찮은 시간이 지났습니다. 보통 저는 우분투를 사용하고 있습니다. 오 - 나는 MAMP를 사용하지 않고있다. 단지 주택 건설 일 뿐이다. – Leo

1

CakePHP로 옮겼을 때이 문제가있었습니다. 현재 MAMP 1.9.x 버전에서는 기본 mysql 포트를 변경하지 않는 한 'host'=> '127.0.0.1'및 'port'=> 8889를 사용합니다.

완벽하게 작동합니다.

0

Windows에서이 기능을 설정하는 친구를 돕고 있습니다.

EasyPHP 내부에는 모든 것이 잘 작동합니다 (MySQL과의 연결). 그래서 Cakephp는 PDO를 사용하여 데이터베이스에 연결합니다.

BAKE를 사용하여 모델 생성을 시도하면 "오류 : 데이터베이스 연결"Mysql이 없습니다. 또는 만들 수 없습니다. "

PHP 명령 행에서 php.ini를 Windows 폴더 내에서 찾으십시오. 따라서 PDO 및 MySQL 확장없이 기본 구성을 찾아서 가져올 수 없습니다.

WINDOWS 폴더 안에 php.ini를 복사하고 빵을 잘 만드십시오!

14

는 MAMP

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

+0

고마워요! 매우 도움이된다. – tshenolo