![](/img/trans.png)
[英]Laravel | MySQL error when i run php artisan migrate command
[英]Laravel php artisan command, to specify the mysql port
在我的Laravel數據庫配置中。
'mysql' => [
'driver' => 'mysql',
'read' => [
'host' => [env('DB_READ_HOST', env('DB_HOST') )]
],
'write' => [
'host' => env('DB_HOST', 'localhost')
],
'port' => env('DB_PORT', '3306'),
我在端口3306上連接到mysql。
但是在docker-compose.yml中,我們告訴mysql在3307端口上進行連接。 Laravel網站在端口3307上可以正常連接到mysql。
mysql:
image: 'mysql'
container_name: api_mysql
restart: always
volumes:
- /var/lib/mysql
ports:
- "3307:3306"
networks:
- api
我也可以通過命令行從端口3307上的主機連接到mysql。
mysql -u web -P3307 -h 127.0.0.1 -p
但是當我運行php artisan命令時
php artisan getData
從托管計算機(不是docker)
我得到了錯誤
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known
這意味着當我從主機運行php artisan時,我遇到了mysql連接問題。
我認為是因為我跑步
php artisan getData
我在docker-compose.yml中設置的端口更改,php artisan不會知道。
php artisan getData
仍會嘗試在3306上連接到mysql,這將導致錯誤。
那我該怎么跑
php artisan getData
並告訴它使用端口3307進行mysql連接?
謝謝!
MySQL在主機的端口3307上可用。 在主機上運行artisan
命令時,需要它們使用此端口,這意味着您需要更新配置。 您可以嘗試在主機上設置DB_PORT
環境變量,以在其中運行命令時使用其他端口。 在執行artisan命令之前,只需在終端中運行以下命令即可:
export DB_PORT=3307
該變量僅在托管計算機中可見,因此在托管環境中不會破壞任何內容。
我建議不要在托管計算機和托管計算機中都運行artisan命令-為什么要這樣做?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.