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

但是当我运行phpartisan命令时

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

此变量仅在托管计算机中可见,因此不会破坏托管环境中的任何内容。

我建议不要在托管和托管机器上使用 运行ning artisan 命令 - 你为什么要这样做?