You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel项目数据库迁移报错:MySQL地址解析失败求助

Laravel迁移报错:无法解析MySQL主机地址

报错信息(翻译后):

Illuminate\Database\QueryException

SQLSTATE[HY000] [2002] php_network_getaddresses: 解析mysql失败:未提供节点名或服务名,或无法识别 (连接名: mysql, SQL: select * from information_schema.tables where table_schema = example_app and table_name = migrations and table_type = 'BASE TABLE')

报错位置:vendor/laravel/framework/src/Illuminate/Database/Connection.php:760

756▕         // 如果执行查询时发生异常,我们会格式化错误
757▕         // 信息,将绑定参数和SQL一起包含进去,这样对开发者来说
758▕         // 比单纯的数据库错误信息更有帮助。
759▕         catch (Exception $e) {
➜ 760▕             throw new QueryException(
761▕                 $this->getName(), $query, $this->prepareBindings($bindings), $e
762▕             );
763▕         }
764▕     }

+47 个调用栈帧

48 artisan:35

Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

解决方案:

  • 检查.env文件数据库配置
    确保DB_HOST的值正确:

    • 若使用Docker Compose,DB_HOST应设置为mysql服务的名称(即docker-compose.yml里services节点下的mysql服务名,通常为mysql);
    • 若本地直接运行artisan命令,且mysql容器已映射端口到本地,DB_HOST设为127.0.0.1而非localhost(避免socket连接异常);
      同时确认DB_PORT、DB_DATABASE、DB_USERNAME、DB_PASSWORD与mysql容器内的配置完全匹配。
  • 清除Laravel配置缓存
    执行命令:

    php artisan config:clear
    

    避免旧缓存配置导致连接逻辑异常。

  • 验证容器网络连通性

    • 确认Laravel容器(若运行在容器内)与mysql容器处于同一Docker网络;
    • 可通过docker inspect <mysql容器名>查看mysql容器的IP,临时将DB_HOST替换为该IP测试连接,排查DNS解析问题。
  • 手动测试数据库连接
    使用mysql客户端测试本地到mysql容器的连接:

    mysql -h <DB_HOST配置的值> -u <DB_USERNAME> -p <DB_DATABASE>
    

    若连接失败,先排查mysql容器的端口映射、防火墙规则,确保网络通路正常。

内容的提问来源于stack exchange,提问作者Abhishek singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 17:52:47