2014-03-05 92 views
22

我想在OS X上運行一個laravel項目。我用自制軟件安裝了MySql。我試着用搜索引擎周圍爲什麼我收到此錯誤:SQLSTATE [HY000] [2002]沒有這樣的文件或目錄

SQLSTATE[HY000] [2002] No such file or directory 

當我嘗試做

php artisan migrate 

而且大部分的答案我看到說PHP和MySQL不能相互通信。我一直在試圖看看我錯了什麼地方,因爲我認爲我跟着以前的帖子說過,但它仍然不起作用。我創建了一個網頁,僅僅做到這一點:

<?php 
    phpinfo(); 
?> 

而且我看到這些類型的東西: 在配置方面,我看到:

'--with-mysql-sock=/tmp/mysql.sock' '--with-mysqli=mysqlnd' '--with-mysql=mysqlnd' '--with-pdo-mysql=mysqlnd' '--enable-pcntl' '--enable-zend-signals' '--enable-dtrace' 

加載配置文件:

/usr/local/etc/php/5.4/php.ini 

如果我ls /tmp,我確實看到mysql.sock。

在這php.ini文件,我設置這些行: pdo_mysql.default_socket =/TMP /的mysql.sock mysql.default_socket = /tmp/mysql.sock mysqli.default_socket = /tmp/mysql.sock

然後在/usr/local/Cellar/mysql/5.6.16/my.cnf,添加以下行:

socket = /tmp/mysql.sock 

我DID重啓Apache,以及檢查運行MySQL。除了php和mysql連接之外,我還沒有看到任何其他的建議。我認爲我的系統上有兩個版本的php,因爲當我安裝了mcrypt或其他我不記得的東西時,它安裝了另一個php版本。但是當我查看phpinfo的輸出時,我正在編輯相應的php.ini文件。我不知道是否有另一片我失蹤。有什麼想法嗎?由於

+0

我剛剛得到這個錯誤通過試圖啓用「MySQL通用查詢日誌」來調試我正在使用的一些教條/ php代碼。 – the0ther

+0

我只需要在php.ini中啓用mysqli.so擴展 – Mehulkumar

回答

42

我有類似的錯誤。我使用的甲基苯丙胺和什麼解決我的問題是:

  1. 創造一個符號鏈接:在/ var/mysql的(創建目錄,如果不存在的話)
  2. CD的/ var/mysql的& &須藤LN - s/Applications/MAMP/tmp/mysql/mysql。襪子
+6

這爲我解決了它。我不使用MAMP,所以它是cd/var/mysql && sudo ln -s /tmp/mysql.sock – mire

+0

非常高興它有幫助! – HappyCoder

+0

@MikeRentas你剛剛救了我一些理智......我看到的每一個參考都是使用MAMP,我只是手動設置了所有的東西 - 你的工作是唯一的,但我現在正在收到一個權限錯誤。 – SMT

7

對於那些正在尋找在XAMPP的解決方案用戶(經過測試,在Mac OS X的工作),

打開終端,並創建符號鏈接:

sudo mkdir /var/mysql 
cd /var/mysql 
sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock 

其他解決方案,在這裏解釋:http://pravams.com/2011/05/26/magento-pdo-exception/

+1

你好,我試過這個,但沒有運氣,我得到錯誤SQLSTATE [HY000] [2002]連接被拒絕。我在Mac OS上使用slim php框架,xampp。任何想法來解決這個問題? – Pathros

+2

連接到數據庫以查看是否有幫助時,請嘗試使用「localhost」而不是「127.0.0.1」,反之亦然。 – F3L1X79

+0

謝謝!現在它可以與'localhost'一起使用。那麼我該怎麼做才能使它與'127.0.0.1'一起工作呢? – Pathros

0

這發生在我身上,我的應用程序(Laravel)昨天工作正常,並且今天丟失了這個錯誤(SQLSTATE [HY000] [2002]沒有這樣的文件或目錄)。

檢查我的配置文件沒有損壞後,我連接到我的控制面板(我正在使用VPS)並重新啓動MySQL服務器。這就是訣竅,一切都恢復在線了。

5

我在CentOS 6上發現PHP使用mysql.default_socket=/var/lib/mysql/mysql.sock構建,但由於某種原因pdo_mysql.default_socket=/tmp/mysql.sock,它不存在。使用--with-mysql-sock=/var/lib/mysql/mysql.sock構建它應該強制兩者相同。

或者編輯php.ini包含:

pdo_mysql.default_socket="/var/lib/mysql/mysql.sock" 

...或者你正確的插槽位置,當然。

0

找到Ampps用戶的解決方案:
我有同樣的問題,我做了很多搜索,但直到我看了我的MySql配置文件才解決了問題。 在我的配置文件插座是線21和路徑是
「/Applications/AMPPS/var/mysql.sock」

在MySQL選項卡上Ampps點擊應用,然後點擊配置按鈕。

您也可以在 「/應用/ AMPPS/mysql /下等」 的文件夾
'unix_socket'=>「配置文件

所以乾脆我加/Applications/AMPPS/var/mysql.sock ',
我的database.php在MySQL數組,它的工作對我來說。
主線後。我已經與本地主機和127.0.0.1測試,並都工作
希望它也適合你。

3

我修正了這個問題,只需添加一行即可。 在laravel項目 APP =>配置=> database.php中 更新
連接=> mysql的 經過嚴格的下面添加行

'unix_socket' => "/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock" 

樣本: -

'mysql' => [ 
      'driver' => 'mysql', 
      'host'  => env('DB_HOST', 'localhost'), 
      'database' => env('DB_DATABASE', 'forge'), 
      'username' => env('DB_USERNAME', 'forge'), 
      'password' => env('DB_PASSWORD', ''), 
      'charset' => 'utf8', 
      'collation' => 'utf8_unicode_ci', 
      'prefix' => '', 
      'strict' => false, 
      'unix_socket' => "/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock" 
     ], 
相關問題