在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'),
            ]) : [],
        ],
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3

docker inspect mysql | grep IP

mysql 的 ip地址换成容器的ip

2年前 评论

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

2年前 评论

PHP 与 MySQL 需要在同一个 network

2年前 评论

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