我在 Laravel 项目中使用 Laradock,当我运行 php artisan migrate 时,遇到以下错误:
SQLSTATE[HY000] [2002] 没有这样的文件或目录
我已经检查了我的 .env 文件和 MySQL 数据库配置,但我仍然面临这个问题。这是我的配置设置:
.env 文件:
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=laravelApp
DB_USERNAME=root
DB_PASSWORD=root
Laravel 配置在 config/database.php 中:
'mysql' => [
'driver' => 'mysql',
'url' => env('DB_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'laravel'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
//'unix_socket' => env('DB_SOCKET', ''),
'charset' => env('DB_CHARSET', 'utf8mb4'),
'collation' => env('DB_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'),
]) : [],
],
我尝试将 DB_HOST 更改为 127.0.0.1,但仍然收到 连接被拒绝错误。关于如何解决这个问题有什么建议吗?”
该问题是由于我的 .env 文件中的 DB_HOST 值设置为 localhost,而 Laradock 中的 MySQL 容器名为 mysql。将 .env 文件中的 DB_HOST 值从 localhost 更改为 mysql(这是我的 MySQL 容器的名称),解决了问题。
需要注意的是,这里的关键点是使用 Docker MySQL 容器的名称作为 .env 文件中的 DB_HOST 值。
我希望这个解决方案可以帮助其他面临类似问题的人!