laradock 数据库连接问题

前言

最近用上了laradock来搭建环境和学习laravel5.5,也顺带学习使用docker。

真的是太好用了

遇到的问题

今天碰上了数据库连接的问题,写篇文章以作记录,欢迎大家指正交流

当我在 .env 使用一下配置时

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=root

链接数据库的会出这样的错:
SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from `users` where `email` = 342174066@qq.com limit 1)

将DB_HOST改成:

DB_HOST=127.0.0.1

错误就变成了
SQLSTATE[HY000] [2002] Connection refused (SQL: select * from `users` where `email` = 342174066@qq.com limit 1)
正确的应该是:

DB_HOST=mysql

貌似这个坑文档都有提过,我在github上也找到了相关的Issues https://github.com/laradock/laradock/issues/178

假装会敲代码

本作品采用《CC 协议》,转载必须注明作者和本文链接
假装会写PHP
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 20

DB_HOST=mysql
用 127.0.0.1 访问的是php容器,php容器里没有mysql 。

https://docs.notadd.com/laradock/

6年前 评论

主机3306端口占用的原因

6年前 评论
lol173

@依剑听雨 原来是这样,http://laradock.io/getting-started/#usage laradock这里也有提到。我后面才发现

6年前 评论

@xushaobo 3306 占用的话 dock 会直接报错的

6年前 评论

@依剑听雨 嗯,是的,没看清问题,谢谢

6年前 评论
小下

刚踩了这个坑

6年前 评论

那么你本机可以用Sequel Pro链接数据库吗?

6年前 评论
lol173

@HectorChan Sequel Pro 没用过,用 navicat 的时候 host 是 127.0.0.1 或者 localhost

6年前 评论

@lol173 不知道为什么我连不上···

6年前 评论

终于找到问题了,谢谢

6年前 评论

PHP7.2+laravel5.6+laravel-admin1.5 运行php artisan admin:install 出现以下错误:

file
laravel的.env数据库配置如下:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=paysystem56
DB_USERNAME=root
DB_PASSWORD=root
请问这是什么原因?

5年前 评论

感谢,成功解决了我的问题!谢谢!

5年前 评论

@beck 您好你的问题解决了嘛?我也是这个问题…………

5年前 评论
lol173

@beck 你的这个我也遇到了过了,你是用了lavadock的话
你在本机执行 php artisan migrate,使用的是你电脑的 php 环境,所以你在 .env 的 DB_HOST 可填 127.0.0.1

如果你使用命令 docker-compose exec workspace bash 进入容器内,执行 php artisan migrate , 就没有问题了,

原因在于容器内运行代码的时候配置 DB_HOST=mysql, 到了容器外也就是我们的本机就不可用了

5年前 评论
KayuHo

@lol173
你好,我是在 workspace 容器中执行数据迁移命令的,但也还是不行,还有其他什么原因导致这个问题吗?

file

file

5年前 评论
php8 4年前
KayuHo

@lol173
打扰了,上个问题可能和 mysql 版本有关,我换成了 5.7 之后是可以执行的

5年前 评论

设置成DB_HOST=mysql以后,又报错这个。
---mysql
php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution

4年前 评论
KevinZ 2年前
焰色天河 10个月前

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