在Docker一件部署的环境下,访问MySQL报错SQLSTATE[HY000] [2002]

运行环境

macOS,Docker4.12.0,Laravel开发环境使用官网脚本生成,MySQL8.0

报错信息

运行php artisan migrate:fresh --seed
报错:

Dropping all tables ............................................................................................... 16ms FAIL

   Illuminate\Database\QueryException 

  SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for mysql failed: nodename nor servname provided, or not known (SQL: SHOW FULL TABLES WHERE table_type = 'BASE TABLE')

  at vendor/laravel/framework/src/Illuminate/Database/Connection.php:759
    755// If an exception occurs when attempting to run a query, we'll format the error
    756// message to include the bindings with SQL, which will make this exception a
    757// lot more helpful to the developer instead of just the database's errors.
    758catch (Exception $e) {759throw new QueryException(
    760▕                 $query, $this->prepareBindings($bindings), $e
    761);
    762}
    763}

      +47 vendor frames 
  48  artisan:37
      Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

Laravel的database配置:

        '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'),
            ]) : [],
        ],
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3

docker inspect mysql | grep IP

mysql 的 ip地址换成容器的ip

2年前 评论

把.env里面DB_HOST改成你mysql容器的容器名。

2年前 评论

PHP 与 MySQL 需要在同一个 network

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!