Почему подключение к базе данных не работает в консоли с cakephp?

Я пытаюсь использовать выпечку с cakephp. Я добрался до экрана приветствия торта ниже:

Welcome to CakePHP v2.3.0-RC2 Console
---------------------------------------------------------------
App : app
Path: /Users/philip7899/Desktop/Philips Server 2/blog/app/
---------------------------------------------------------------
Interactive Bake Shell
---------------------------------------------------------------
[D]atabase Configuration
[M]odel
[V]iew
[C]ontroller
[P]roject
[F]ixture
[T]est case
[Q]uit
What would you like to Bake? (D/M/V/C/P/F/T/Q)

Я набираю C, и он спрашивает меня о моей конфигурации базы данных:

Bake Controller
Path: /Users/philip7899/Desktop/Philips Server 2/blog/app/Controller/
---------------------------------------------------------------
Use Database Config: (default/test) 
[default] > 

Я нажимаю Enter, чтобы подтвердить использование конфигурации базы данных «по умолчанию». Я вставил это ниже:

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'root',
    'password' => 'root',
    'database' => 'cakephp_blog',
    'prefix' => '',

    //'encoding' => 'utf8',
);

Затем я получаю следующие ошибки:

Warning Error: PDO::__construct(): [2002] No such file or directory 
(trying to connect via unix:///var/mysql/mysql.sock) in 
[/Users/philip7899/Desktop/Philips Server 2/blog/lib/Cake/Model/Datasource/Database/Mysql.php, line 157]

Error: Database connection "Mysql" is missing, or could not be created.
#0 /Users/philip7899/Desktop/Philips Server 2/blog/lib/Cake/Model/Datasource/DboSource.php(261): Mysql->connect()
#1 /Users/philip7899/Desktop/Philips Server 2/blog/lib/Cake/Model/ConnectionManager.php(101): DboSource->__construct(Array)
#2 /Users/philip7899/Desktop/Philips Server 2/blog/lib/Cake/Console/Command/Task/ModelTask.php(903): ConnectionManager::getDataSource('default')
#3 /Users/philip7899/Desktop/Philips Server 2/blog/lib/Cake/Console/Command/Task/ControllerTask.php(396): ModelTask->getAllTables('default')
#4 /Users/philip7899/Desktop/Philips Server 2/blog/lib/Cake/Console/Command/Task/ControllerTask.php(419): ControllerTask->listAll(NULL)
#5 /Users/philip7899/Desktop/Philips Server 2/blog/lib/Cake/Console/Command/Task/ControllerTask.php(136): ControllerTask->getName()
#6 /Users/philip7899/Desktop/Philips Server 2/blog/lib/Cake/Console/Command/Task/ControllerTask.php(61): ControllerTask->_interactive()
#7 /Users/philip7899/Desktop/Philips Server 2/blog/lib/Cake/Console/Command/BakeShell.php(113): ControllerTask->execute()
#8 /Users/philip7899/Desktop/Philips Server 2/blog/lib/Cake/Console/Shell.php(391): BakeShell->main()
#9 /Users/philip7899/Desktop/Philips Server 2/blog/lib/Cake/Console/ShellDispatcher.php(199): Shell->runCommand(NULL, Array)
#10 /Users/philip7899/Desktop/Philips Server 2/blog/lib/Cake/Console/ShellDispatcher.php(67): ShellDispatcher->dispatch()
#11 /Users/philip7899/Desktop/Philips Server 2/blog/app/Console/cake.php(33): ShellDispatcher::run(Array)
#12 {main}

Я провел последние несколько часов в Интернете, пытаясь понять это, и я не смог это исправить. Я знаю, что конфигурация базы данных работает, потому что сам веб-сайт работает отлично. Как я могу заставить торт работать в консоли и позволить мне продолжить? Спасибо.


person Philip7899    schedule 10.09.2013    source источник
comment
Сначала я должен прокомментировать, что вы используете версию PHP 2.3.0 Release Candidate, когда ветка 2.3 уже есть в 2.3.10. Оставим это в стороне, поскольку вы, кажется, находитесь в Windows, как у вас установлены mysql, php и apache?   -  person user221931    schedule 10.09.2013
comment
Попробуйте «хост» => «127.0.0.1», а не «хост» => «локальный хост»,   -  person joshua.paling    schedule 10.09.2013
comment
У меня есть Mac и Mamp, и я использую php 5.3, я думаю. Я попробовал предложение Джошуа изменить «хост» => «127.0.0.1», но это тоже не сработало. Одна вещь, которая сработала (я думаю), заключалась в том, чтобы ввести test, когда меня спросили о конфигурации базы данных (помните, что мне было предложено ввести default или test), и это сработало. Но я не понимаю, так как конфигурация тестовой базы данных и конфигурация базы данных по умолчанию идентичны. Как это может быть?   -  person Philip7899    schedule 10.09.2013
comment
У вас есть централизованная установка CakePHP / Вы звоните cake bake относительно вашего каталога APP?   -  person jtrumbull    schedule 25.02.2015


Ответы (1)


класс DATABASE_CONFIG {

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'root',
    'password' => 'admin',// your password
    'database' => 'gps',
    'prefix' => '',
    //'encoding' => 'utf8',
);

public $test = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'user',
    'password' => 'password',
    'database' => 'test_database_name',
    'prefix' => '',
    //'encoding' => 'utf8',
);

} вы попробуете это в файле database.php в папке конфигурации

person krupal patel    schedule 10.09.2013