2013-10-11 55 views
7

我試圖從cake命令行工具生成模型代碼。但是有這個問題。數據庫連接「Mysql」丟失,mysql.sock丟失

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) 

我正在使用MAMP。

我搜索了很多,發現了一些解決方案。例如,這個 CakePHP: No such file or directory (trying to connect via unix:///var/mysql/mysql.sock)

或者我也可以做一個mysql.sock的符號鏈接。

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

但在此之前我做任何事,問題是的mysql.sock文件不存在此目錄中。我試過重新安裝MAMP,但仍然沒有mysql.sock。

請幫我解決這個問題?我可以創建我自己的mysql.sock文件..?

編輯:我的數據庫配置

public $default = array(
    'datasource' => 'Database/Mysql', 
    'persistent' => false, 
    'host' => 'localhost', 
    'login' => 'root', 
    'password' => 'root', 
    'database' => 'db_name', 
    'prefix' => '' 
); 
+0

你可以請你發佈你的數據庫配置參數嗎? – arilia

+0

編輯我的問題,我必須說的一件事是數據庫連接沒有任何問題。但是爲了通過cakephp cli創建模型,它使用了不存在於我提到的mamp文件夾中的mysql.sock。 – ManinGreen

+0

如果您嘗試使用127.0.0.1而不是本地主機,該怎麼辦? – arilia

回答

8

MAMP奇怪的是,當涉及到MySQL。有可能你需要建立一個符號鏈接,以便知道在哪裏找到它。喜歡的東西:

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

+0

感謝您的回覆。我確實創建了一個符號鏈接,但我的問題沒有解決。 – ManinGreen

+1

要在php-cli中使用它,在創建符號鏈接後,編輯你的php.ini:'pdo_mysql.default_socket =/tmp/mysql.sock','mysql.default_socket =/tmp/mysql.sock','mysqli。 default_socket =/tmp/mysql.sock' – Seb33300

+0

這個文件在我的情況下根本就沒有創建。你能告訴我如何讓mamp生成文件嗎?但phpmyadmin完美無缺 –

3

搜索並嘗試了很多東西,我終於成功地解決我的問題後。答案查克·伯吉斯上面給出可以解決這個問題,但我的情況是有點不同,我是無法看到的mysql.sock文件在:

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

,我想我的mysql.sock失蹤了,但實際上它是在那裏和隱藏(這是奇怪的!我用CLI和SAW那個向那個文件夾致意)。我正在使用以''開頭的MAC和文件。通常是隱藏的,但不知道爲什麼mysql.sock被隱藏了,所以我在我的數據庫配置文件中添加了1個參數(unix_socket),我的問題就解決了。

'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock' 
+0

,在這裏它隱藏起來,可以通過cli查看它。但是當我添加unix_socket仍然沒有連接。 –

0

我一直在整個週末的掙扎與此並最終解決它。原來,php.ini指向一個不存在的「擴展目錄」。創建的phpinfo()文件,並期待在這個字段的值: extensions_dir

我注意到毫安PHP的安裝文件夾中有一個沒有調試非ZTS-20131226的文件夾,這是從價值不同顯示在phpinfo()中。我所做的就是複製這個文件夾並將其名稱改爲phpinfo()的值。可能你可以修改php.ini文件,但我不想。

我看到你解決了你的問題,但是我的不同,所以我發佈這個答案,以幫助未來的谷歌尋找類似的問題。

希望這會有所幫助。

1

在我的情況,這是因爲我打電話錯誤的版本的PHP。即我使用的是/usr/bin/php,當MAMP Pro的php是/Applications/MAMP/bin/php/php5.3.29/bin/php

+0

男人你怎麼做到這一點 – Monclee

1

在我的情況下,問題出現在停電後。所以我通過刪除/Applications/MAMP/tmp/mysql/mysql.pid文件並重新啓動MAMP來修復它。

+0

這打破了我的麻煩:-( – rcpfuchs

+0

破了我的,甚至在返回文件後... –

0

隨着MAMP文件夾中創建符號鏈接的/ var/mysql /下:

須藤LN -n /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock