簡體   English   中英

Laravel php artisan命令,指定mysql端口

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM