Laravel 框架能够正常地使用 PHP artisan migrate 进行迁移,但是利用 Eloquent 模型访问数据库时提示 connection refused

2020-05-15 06:39:03 +08:00
 Sunxy88

主要问题如题,环境如下:

OS: OS X 10.15.4

Laravel: 7.7.1

下列环境是在 laradock 中

MySQL: 8.0.19

使用搜索引擎搜到过有人出现过相关问题,对应答案有人建议修改.env配置文件。 我进行测试后,修改配置文件可以影响php artisan migrate所迁移的数据库,但使用 Eloquent 进行查询时还是提醒 coneection refused,.env文件中相关配置应该是正确的。

刚开始学习 Laravel,还望各位大神能够点拨一二,提前谢谢了!

1298 次点击
所在节点    问与答
8 条回复
sleepm
2020-05-15 07:23:41 +08:00
migrate 应该是用的 workspace 里的 php 执行的
使用模型去查询应该是走的 php-fpm
所以应该是 php-fpm 到 mysql 容器不通
cnbattle
2020-05-15 08:04:17 +08:00
.env 里 数据库 host 配置贴下,是容器名吗?
Dcynsd
2020-05-15 08:37:59 +08:00
`.env` 文件 `MYSQL_HOST` 是不是 容器名啊?
cgpiao
2020-05-15 10:29:54 +08:00
可能是表名的问题,在 model 中设置表名再试试。
laravel 默认使用 model 的复数形式,你如果使用了单数的表名那就连不上。
还有一点如果有多个 schema,那每个 Model 都设置对应的 connection 。
dilu
2020-05-15 15:39:27 +08:00
host 从 localhost 改成 127
Sunxy88
2020-05-15 22:35:34 +08:00
@cnbattle
@Dcynsd
@dilu
感谢回复,.env 配置如下:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=root
DB_PASSWORD=root

@cgpiao
model 内设置的表名因该是正确的,但是我无法判断连接是不是对的。但是没有配置多个连接,应该使用的是默认的连接吧。
cnbattle
2020-05-15 23:46:53 +08:00
看下 mysql 容器名称,把 DB_HOST 改为其名称,
通过 docker-compose 编排的环境,相互访问我都是用对应的容器名,127.0.0.1 会请求本容器,不会请求到对应容器里
Sunxy88
2020-05-16 15:48:14 +08:00
@cnbattle 十分感谢您,问题解决了!鞠躬!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/671848

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX