在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'),
            ]) : [],
        ],
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

docker inspect mysql | grep IP

mysql 的 ip 地址换成容器的 ip

2年前 评论

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

2年前 评论

PHP 与 MySQL 需要在同一个 network

2年前 评论