2 回答

TA貢獻1836條經驗 獲得超3個贊
當需要建立主機和容器化 Docker 數據庫之間的連接時,您需要使用主機的環回 IP 地址 (127.0.0.1),在您的情況下,這將如下所示:
...
'host' => '127.0.0.1',
'port' => HOST_MACHINE_MYSQL_PORT
'username' => DOCKER_MYSQL_USERNAME,
'password' => DOCKER_MYSQL_PASSWORD,
'database' => DOCKER_MYSQL_DATABASE_NAME
...
HOST_MACHINE_MYSQL_PORT是主機上的端口,DB 服務從 Docker 容器指向該端口。
當您連接到在 Docker 容器內運行的 MySQL 服務器公開的端口時,應按預期建立連接。
localhost關于vs 的快速說明127.0.0.1:
localhost 是給機器本身的標準主機名,通常解析并映射到 127.0.0.1 地址。
127.0.0.1 地址是機器本身的地址,用于與最終用戶使用的同一臺機器或計算機建立 IP 連接。

TA貢獻1815條經驗 獲得超10個贊
我用環境變量更改了 app.php,更改了數據庫的用戶名和密碼。
我刪除了 ./data/mysql 的數據重建容器但仍然是同樣的錯誤我猜它與主機名有關
也嘗試使用變量 PMA_HOST 但仍然沒有成功。(本地主機也不起作用)
'host' => env('PMA_HOST'),
如果我登錄到 phpmyadmin,我可以毫無問題地創建我的表。
如果我登錄到容器,我可以登錄并進行查詢
我看到套接字沒有通過 grepping php 設置填充,
pdo_mysql.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock
現在這已經填滿了,但仍然沒有繼續 php 連接到 mysql(在蛋糕上,在我的數據庫測試腳本中我有連接)。
- 2 回答
- 0 關注
- 251 瀏覽
添加回答
舉報