7

I was trying to generate model code from cake command line tool. But got this issue.

Warning Error: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in [/Users/test/Google_WWW/project_name/lib/Cake/Model/Datasource/Database/Mysql.php, line 177]

Error: Database connection "Mysql" is missing, or could not be created. (although it's showing that mysql database is connected at localhost in cakephp directory)

I'm using MAMP.

I searched a lot and found some solutions. For instance,this CakePHP: No such file or directory (trying to connect via unix:///var/mysql/mysql.sock)

or I can also make a symbolic link of mysql.sock.

/Applications/MAMP/tmp/mysql/mysql.sock (not present in directory)

But before i do anything, the problem is mysql.sock file isn't present in this directory. I have tried re-installing the MAMP but still no mysql.sock.

Please help me solve this problem ? Can I create my own mysql.sock file..?

Edit: My db config

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'root',
    'password' => 'root',
    'database' => 'db_name',
    'prefix' => ''
);
Community
  • 1
  • 1
ihaider
  • 1,290
  • 4
  • 19
  • 38

7 Answers7

11

MAMP is strange when it comes to mysql. Chances are you need to set up a symbolic link so it knows where to find it. Something like:

sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

Chuck Burgess
  • 11,600
  • 5
  • 41
  • 74
  • Thanks for the reply. I did create a symbolic link but my problem wasn't solved. – ihaider Oct 12 '13 at 19:05
  • 1
    To use it with php-cli, after creating the symbolic link, edit your php.ini: `pdo_mysql.default_socket= /tmp/mysql.sock`, `mysql.default_socket = /tmp/mysql.sock`, `mysqli.default_socket = /tmp/mysql.sock` – Seb33300 Apr 29 '14 at 13:56
  • the file is not created at all in my case. can you please tell me how to get mamp to generate the file? but phpmyadmin works perfectly fine – Harsha M V Jun 13 '14 at 03:02
  • The blog link above does not work. Also this symlink solution is aimed at MAMP, not MAMP PRO – geoidesic Dec 13 '14 at 09:47
  • 1
    bravo, your solution really work. i stuck in this problem for almost 2 weeks – Sruit A.Suk Dec 14 '21 at 02:11
4

After searching and trying a lot of things I finally managed to solve my problem. The answer Chuck Burgess given above could solve the problem, but my scenario was little different that I wasn't able to see mysql.sock file at:

    /Applications/MAMP/tmp/mysql/mysql.sock

I thought my mysql.sock was missing but actually it was there and hidden (THAT's STRANGE! I WENT TO THAT FOLDER using CLI AND SAW THAT). I'm using MAC and files starting with '.' are usually HIDDEN but don't know why mysql.sock was hidden so what I did is in my database configuration file I added 1 parameter (unix_socket) and my problem was solved.

   'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock'
ihaider
  • 1,290
  • 4
  • 19
  • 38
1

In my case it was because I was calling the wrong version of PHP. I.e. I was using /usr/bin/php which when MAMP Pro's php is /Applications/MAMP/bin/php/php5.3.29/bin/php

geoidesic
  • 4,649
  • 3
  • 39
  • 59
0

I've been struggling with this the whole weekend and finally solved it. Turns out that the php.ini is pointing to a non-existing "extensions dir". Create a phpinfo() file and look at the value of this field: extensions_dir

I noticed that in the mamp php installed folder there is a no-debug-non-zts-20131226 folder, which is different from the value shown in the phpinfo(). What I did was to clone this folder and changed the name to the value of the phpinfo(). Probably you could modify the php.ini file but I didn't want to.

I see that you solved your problem but mine was different so I'm posting this answer to help future googlers looking for a similar problem.

Hope this helps.

chuysbz
  • 1,262
  • 6
  • 18
  • 47
0

In my case the problem appear just after a power outage. So I fixed it by deleting the /Applications/MAMP/tmp/mysql/mysql.pid file and restarting MAMP.

Mike
  • 23,542
  • 14
  • 76
  • 87
0

With MAMP create a symbolic link in the folder /var/mysql/:

sudo ln -n /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock

Fabien Thetis
  • 1,666
  • 15
  • 11
0

Same problem here, but managed to resolve it connecting to IP:Port, not socket.

'host' => '127.0.0.1', //use 172.0.0.1 instead of localhost
'port' => '8889', //default MAMP MySQL devel port, default production port is 3306

and forget about socket connection.

David Buck
  • 3,752
  • 35
  • 31
  • 35