PDOException SQLSTATE 不存在該檔案或目錄
P粉038161873
2023-08-10 17:44:11
<p>我相信我已經成功將我的(非常基本的)網站部署到fortrabbit,但是一旦我連接到SSH運行一些命令(如<code>php artisan migrate</code>或<code>php artisan db:seed</code>),我會收到一個錯誤訊息:</p>
<pre class="brush:php;toolbar:false;">[PDOException]
SQLSTATE[HY000] [2002] 沒有這個檔案或目錄</pre>
<p>在某個時候遷移肯定是成功的,因為我的表是存在的 - 但這並不能解釋為什麼現在對我不起作用。 </p>
這個錯誤的最簡單原因之一是MySQL伺服器沒有運作。所以首先要進行驗證。如果它正在運行,請繼續其他建議:
我遇到了完全相同的問題。以上解決方案都對我無效。我透過將/app/config/database.php檔案中的"host"從"localhost"更改為"127.0.0.1"來解決了這個問題。
不確定為什麼"localhost"預設情況下不起作用,但我在一個類似的問題中找到了這個答案,它在一個symfony2的帖子中解決了。 https://stackoverflow.com/a/9251924
更新: 有些人問為什麼這個修復方法有效,所以我對這個問題做了一些研究。根據這個帖子的解釋,它們使用了不同的連接類型。 https://stackoverflow.com/a/9715164
這裡出現的問題是"localhost"使用了UNIX套接字,無法在標準目錄中找到資料庫。然而,"127.0.0.1"使用TCP(傳輸控制協定),這意味著它透過電腦上的"本地網路"運行,比UNIX套接字更可靠。
錯誤訊息表示嘗試透過套接字建立MySQL連線(這是不支援的)。
在Laravel(artisan)的上下文中,您可能想要使用不同的/正確的環境。例如:
php artisan migrate --env=production
(或任何其他環境)。請參見這裡。