Sunxy88
V2EX  ›  问与答

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

  •  1
     
  •   Sunxy88 · May 15, 2020 · 2378 views
    This topic created in 2364 days ago, the information mentioned may be changed or developed.

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

    OS: OS X 10.15.4

    Laravel: 7.7.1

    下列环境是在 laradock 中

    MySQL: 8.0.19

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

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

    8 replies  •  2020-05-16 15:48:14 +08:00
    sleepm
    sleepm
    May 15, 2020 via Android
    1
    migrate 应该是用的 workspace 里的 php 执行的
    使用模型去查询应该是走的 php-fpm
    所以应该是 php-fpm 到 mysql 容器不通
    cnbattle
    cnbattle
    May 15, 2020 via Android
    2
    .env 里 数据库 host 配置贴下,是容器名吗?
    Dcynsd
    Dcynsd
    May 15, 2020❤️1
    3
    `.env` 文件 `MYSQL_HOST` 是不是 容器名啊?
    cgpiao
    cgpiao
    May 15, 2020
    4
    可能是表名的问题,在 model 中设置表名再试试。
    laravel 默认使用 model 的复数形式,你如果使用了单数的表名那就连不上。
    还有一点如果有多个 schema,那每个 Model 都设置对应的 connection 。
    dilu
    dilu
    May 15, 2020
    5
    host 从 localhost 改成 127
    Sunxy88
    Sunxy88
    OP
    May 15, 2020
    6
    @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
    cnbattle
    May 15, 2020 via Android❤️1
    7
    看下 mysql 容器名称,把 DB_HOST 改为其名称,
    通过 docker-compose 编排的环境,相互访问我都是用对应的容器名,127.0.0.1 会请求本容器,不会请求到对应容器里
    Sunxy88
    Sunxy88
    OP
    May 16, 2020
    8
    @cnbattle 十分感谢您,问题解决了!鞠躬!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5189 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 06:37 · PVG 14:37 · LAX 22:37 · JFK 01:37
    ♥ Do have faith in what you're doing.