Консоль Cakephp (выпекать) на Mac OS с Mamp :ошибка подключения к базе данных

StackOverflow https://stackoverflow.com/questions/1688705

Вопрос

Я пытаюсь сделать то, что Простое приложение, управляемое Acl учебное пособие в кулинарной книге cakephp.Идея заключается в том, :

Создание баз данных

 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), последнюю версию Mamp (1.7.2) под управлением PHP v5...Кто - нибудь знает , в чем проблема ?

Это было полезно?

Решение

Вы также можете обойти использование IP-адреса localhost, выполнив

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, который вообще не использует сокет.

Другие советы

Это версия конфигурации базы данных 2.x для localhost на 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'
);

Хорошо, я нашел способ сделать это, это могло бы помочь людям, у которых есть такая же проблема :я установил для хоста значение 127.0.0.1, чтобы cake мог подключиться к нему.Спасибо за помощь.

торт не может найти розетку.

попробуйте создать символическую ссылку из того места, где находится ваш сокет, туда, где, по мнению Cake, она должна быть:

ln -s /Приложения/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

У меня была эта проблема, когда я перешел на CakePHP.В моей текущей версии MAMP 1.9.x я просто удостоверяюсь, что использую 'host' => '127.0.0.1' и 'port' => 8889 (если вы не измените порт mysql по умолчанию).

У меня это работает идеально.

Я помогаю другу настроить это в Windows.

Внутри EasyPHP все работает нормально (соединение с Mysql).Итак, Cakephp использует PDO для подключения к базе данных.

Когда вы пытаетесь использовать BAKE для генерации моделей, поднимите:"Ошибка:Соединение с базой данных "Mysql" отсутствует или не может быть создано ".

PHP в командной строке попробуйте найти php.ini внутри папки Windows, чтобы они не могли найти и получить конфигурацию по умолчанию без расширений PDO и Mysql.

Скопируйте php.ini в папку WINDOWS, и выпечка будет работать нормально!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top