Laravel .env config DB_HOST 127.0.0.1 or mysql



根据https://laravel.com/docs/9.x/installation#getting-在windows 上启动

.env中的DB_HOST存在问题:要执行像php artisan migrate:freshDB_HOST这样的手工命令,需要将其设置为127.0.0.1localhost,这对我来说很有意义。

但在浏览器(localhost(上显示信息时,DB_HOST需要为mysql,否则连接将被拒绝。

为什么DB_HOST会被设置为mysql?我如何解决它,使DB_HOST适用于这两种情况?

.env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1 || localhost || mysql(?)
DB_PORT=3306
B_DATABASE=tutorial
DB_USERNAME=sail
DB_PASSWORD=password

数据库

'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],

对我来说,解决方案是用找到docker IP

dd(Request::ip());    

这不是127.0.0.1,而是172.18.0.1。之后,我用配置了.ENV文件

DB_HOST=172.18.0.1

并运行

php artisan migrate:refresh

从码头码头(而不是从本地(,一切正常

不幸的是,我不知道如何解释为什么,我希望其他人能对这件事有更多的了解

最新更新