Laravel 8搭配Sail执行migrate等数据库操作出现SQLSTATE[HY000][2002]错误
Laravel Sail 数据库操作报错解决方案
- 修正
.env中的数据库主机配置:将DB_HOST的值改为mysql(Sail 默认 MySQL 服务的容器通信名称,Docker 会自动完成服务名到对应数据库容器IP的解析)。你之前填写localhost/127.0.0.1均指向 Laravel 应用容器本身,应用容器内没有运行 MySQL 服务,因此会触发连接报错。若你使用 Sail 配置的是 PostgreSQL 数据库,将
DB_HOST改为pgsql即可,其他类型数据库对应docker-compose.yml中定义的数据库服务名称修改即可。 - 确认
.env中以下参数和docker-compose.yml里 mysql 服务的配置完全一致:DB_DATABASEDB_USERNAMEDB_PASSWORD
- 修改完成后执行命令清除配置缓存:
sail artisan config:clear - 执行命令重启 Sail 服务让配置生效:
sail restart - 重启完成后重新执行迁移命令测试:
sail migrate
补充说明:只有当你在宿主机使用本地数据库管理工具连接 Sail 内的数据库时,才需要使用
127.0.0.1+ 映射端口(默认3306)访问,容器内的应用访问数据库必须使用服务名。
内容的提问来源于stack exchange,提问作者flowz0r
相关产品推荐
相关产品推荐

