PHPStorm+Docker下单元测试一直提示数据库问题

  • Docker选用的Laradock,除了单元测试,数据库皆正常。
  • PHP-Cli已经配置,不涉及到数据库的测试都能进行。
  • Docker内进行涉及数据库的测试也正常。
  • unit.xml database.php .env都已配置(其中DB_HOST=mysql)。

但是使用PHPStorm运行涉及数据库的测试时就会报错:

PDOException : SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

查了一些资料,比较靠谱的回答就是让在Docker内进行测试,有大神知道如何在PHPStorm上直接进行测试么?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

哈哈,太正常了

你知道 laravel 的 .env 中 DB_HOST=mysql 是什么意思吗?
又是怎么用的?

laradock 的 .env 和 docker-compose.yaml 中 mysql 是什么意思吗

如果 没有修改端口, 用的是 3306 端口, 你可以在宿主主机修改 hosts 文件,添加下面的内容

127.0.0.1 mysql

如果修改 mysql 端口会有其他问题

提示:

  • docker 中 ip + 端口
  • docker-compose 中 ip 和端口(service name)
  • 本地的 IP + 端口

这几个的相同点是什么,不同点又是什么,以及如何互联

PS: 也可以进入workspace 里面执行 测试,这个里面有所有软件

3年前 评论
meitian (楼主) 3年前
kis龍 (作者) 3年前
讨论数量: 6

哈哈,太正常了

你知道 laravel 的 .env 中 DB_HOST=mysql 是什么意思吗?
又是怎么用的?

laradock 的 .env 和 docker-compose.yaml 中 mysql 是什么意思吗

如果 没有修改端口, 用的是 3306 端口, 你可以在宿主主机修改 hosts 文件,添加下面的内容

127.0.0.1 mysql

如果修改 mysql 端口会有其他问题

提示:

  • docker 中 ip + 端口
  • docker-compose 中 ip 和端口(service name)
  • 本地的 IP + 端口

这几个的相同点是什么,不同点又是什么,以及如何互联

PS: 也可以进入workspace 里面执行 测试,这个里面有所有软件

3年前 评论
meitian (楼主) 3年前
kis龍 (作者) 3年前

给你个简单的方案 在你的hosts文件内增加一行

127.0.0.1 mysql

3年前 评论

如果 MySQL 和 PHP 容器是同属于一个网段的话,大概就是因为单元测试没有找到 环境配置文件。你可以在使用数据库之前输出一下 env('DB_HOST') 的值

3年前 评论

docker 的单元测试很慢,体验很差

3年前 评论

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