9

I have problem running the bake commands. i think it is related to mysql but i didn't find any solution to this error on Stackoverflow. This is my app.php:

'Datasources' => [
        'default' => [
            'className' => 'Cake\Database\Connection',
            'driver' => 'Cake\Database\Driver\Mysql',
            'persistent' => false,
            'host' => 'localhost',

            //'port' => 'nonstandard_port_number',
            'username' => 'root',
            'password' => 'root',
            'database' => 'laboiterose',
            'encoding' => 'utf8',
            'timezone' => 'UTC',
            'cacheMetadata' => true,

Please help, the error i get, is:

Exception: SQLSTATE[HY000] [2002] No such file or directory in [/Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Database/Driver/PDODriverTrait.php, line 48]
2015-06-19 14:35:48 Error: [PDOException] SQLSTATE[HY000] [2002] No such file or directory
Stack Trace:
0 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Database/Driver/PDODriverTrait.php(48): PDO->__construct('mysql:host=loca...', 'root', 'root', Array)
1 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Database/Driver/Mysql.php(89): Cake\Database\Driver\Mysql->_connect('mysql:host=loca...', Array)
2 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Database/Schema/BaseSchema.php(46): Cake\Database\Driver\Mysql->connect()
3 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Database/Dialect/MysqlDialectTrait.php(62): Cake\Database\Schema\BaseSchema->__construct(Object(Cake\Database\Driver\Mysql))
4 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Database/Schema/Collection.php(52): Cake\Database\Driver\Mysql->schemaDialect()
5 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Database/Schema/CachedCollection.php(44): Cake\Database\Schema\Collection->__construct(Object(Cake\Database\Connection))
6 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Database/Connection.php(319): Cake\Database\Schema\CachedCollection->__construct(Object(Cake\Database\Connection), true)
7 /Applications/MAMP/htdocs/my_db/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(806): Cake\Database\Connection->schemaCollection()
8 /Applications/MAMP/htdocs/my_db/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(782): Bake\Shell\Task\ModelTask->_getAllTables()
9 /Applications/MAMP/htdocs/my_db/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(186): Bake\Shell\Task\ModelTask->listAll()
10 /Applications/MAMP/htdocs/my_db/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(109): Bake\Shell\Task\ModelTask->getAssociations(Object(Cake\ORM\Table))
11 /Applications/MAMP/htdocs/my_db/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(95): Bake\Shell\Task\ModelTask->bake('Users')
12 /Applications/MAMP/htdocs/my_db/vendor/cakephp/bake/src/Shell/BakeShell.php(241): Bake\Shell\Task\ModelTask->main('Users')
13 [internal function]: Bake\Shell\BakeShell->all('users')
14 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Console/Shell.php(380): call_user_func_array(Array, Array)
15 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Console/ShellDispatcher.php(204): Cake\Console\Shell->runCommand(Array, true)
16 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Console/ShellDispatcher.php(175): Cake\Console\ShellDispatcher->_dispatch()
17 /Applications/MAMP/htdocs/my_db/vendor/cakephp/cakephp/src/Console/ShellDispatcher.php(126): Cake\Console\ShellDispatcher->dispatch()
18 /Applications/MAMP/htdocs/my_db/bin/cake.php(33): Cake\Console\ShellDispatcher::run(Array)
19 {main}
ρss
  • 5,115
  • 8
  • 43
  • 73
Mireil
  • 183
  • 1
  • 9
  • possible duplicate of [Starting with Zend Tutorial - Zend\_DB\_Adapter throws Exception: "SQLSTATE\[HY000\] \[2002\] No such file or directory"](http://stackoverflow.com/questions/2412009/starting-with-zend-tutorial-zend-db-adapter-throws-exception-sqlstatehy000) – ndm Jun 21 '15 at 00:48

6 Answers6

10

First, Lets find out what version of PHP we're running (To find out if it's the default version).

To do that, Within the terminal, Fire this command:

which php

This should output the path to the default PHP install which comes preinstalled by Mac OS X, by default it has to be (Assuming you've not changed it before):

/usr/bin/php

Now, We just need to swap this over to the PHP that is installed with MAMP, which is located at /Applications/MAMP/bin/php/php7.0.0/bin (MAMP 3.5)

To do this, We need to edit the .bash_profile and add the MAMP version of PHP to the PATH variable. Follow these simple steps:

Within the Terminal, run vim ~/.bash_profile

Type i and then paste the following at the top of the file:

export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH

Hit ESC, Type :wq, and hit Enter

In Terminal, run source ~/.bash_profile

In Terminal, type in which php again and look for the updated string. If everything was successful, It should output the new path to MAMP PHP install.

In case it doesn't output the correct path, try closing the terminal window (exit fully) and open again, it should apply the changes (Restart in short).

6754534367
  • 5,123
  • 4
  • 17
  • 24
  • This is the correct answer. It works under MAMP 5.2 and CakePHP 3.7.3 on macOS Mojave. – Andy Feb 05 '19 at 09:59
8

I think this is the best way:

'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',

add this in your database config

Navegante
  • 186
  • 1
  • 2
7

Problem solved!! The only thing i should add is this line in .bash_profile to make it work:

export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
Mireil
  • 183
  • 1
  • 9
  • 1
    Can you explain why this makes it work, because it worked for me. (Also people should restart Terminal after) – ericjam Oct 01 '15 at 21:03
  • 1
    @liquified It changes the path from the default PHP install which comes preinstalled by MAC OS X to the path that leads to your MAMP PHP install. – 6754534367 Apr 28 '16 at 15:33
3

Changing 'host' => 'localhost', to 'host' => '127.0.0.1', resolve the issue with Exception for me.

 'Datasources' => [
        'default' => [
            'className' => 'Cake\Database\Connection',
            'driver' => 'Cake\Database\Driver\Mysql',
            'persistent' => false,
            'host' => '127.0.0.1',

I'm running on the Ampps.

redrom
  • 11,502
  • 31
  • 157
  • 264
1

I am a beginner and got this problem on CakePHP Tutorial with using MAMP on MAC.

First I found php in my MAMP with this command:

find /Applications/mampstack-7.1.21-0/ -type f -name php

This should output your directory…. In my case this was:
/Applications/mampstack-7.1.21-0//php/bin/php

Then I found .bash_profile and opened it with this command:

touch ~/.bash_profile; open ~/.bash_profile

It will open it with TextEdit. Then in this file, I edited path to the one I got with the first command and deleted the extra path with sbin:

export PATH="/Applications/mampstack-7.1.21-0/php/bin/:$PATH"

In Terminal command:

grep php ~/.bash_profile

Then I closed all terminals and after that, it works for me.

Thanks a lot for the first comment, it was helpful to get to this solution.

Mahdiyeh
  • 865
  • 11
  • 12
-2

can test that

 'default' => [
        'className' => 'Cake\Database\Connection',

        'driver' => 'Cake\Database\Driver\Mysql',

        'persistent' => false,

        'host' => 'localhost',

        'username' => 'root',

        'password' => '',

        'database' => 'laboiterose',

        'encoding' => 'utf8',

        'timezone' => 'UTC',

        'cacheMetadata' => true,

        'quoteIdentifiers' => false,

   ],
Lalit Kumar B
  • 47,486
  • 13
  • 97
  • 124
Ahmed MR-mody
  • 61
  • 1
  • 6