我是靠谱客的博主 阳光流沙,最近开发中收集的这篇文章主要介绍error dial tcp 127.0.0.1:3306: connect: connection refused项目场景:问题描述原因分析:解决方案:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

项目场景:

项目场景:微服务项目中使用consul作为配置中心存储mysql配置,获取配置后使用gorm连接mysql数据库时出现错误。


问题描述

error dial tcp 127.0.0.1:3306: connect: connection refused

// get mysql config from consul
mysqlInfo := common.GetMysqlFromConsul(consulConfig, "mysql")
db, err := gorm.Open("mysql", mysqlInfo.User+":"+mysqlInfo.Pwd+"@/"+mysqlInfo.Database+"?charset=utf8&parseTime=True&loc=Local")
if err != nil {
    log.Error(err)
}

原因分析:

consul中mysql配置如图:

 使用docker启动MySQL容器实例,命令如下:

docker run -p 3360:3360 -v $pwd/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

启动mysql容器实例后使用docker命令查看正在运行的容器:

docker ps

 一般出现error dial tcp 127.0.0.1:3306: connect: connection refused,有两种情况:

第一种情况如果地址是正确的,那么就是mysql没有启动,但是通过查看正在运行的容器,发现mysql是已经启动并且正在运行了,所以不是这种情况。

第二种情况就是地址错误了,通过查看mysql容器实例所暴露出来的端口为3360,而consul中mysql配置的端口为3306。


解决方案:

在docker启动mysql容器实例时使用的命令指定端口映射为3360,而配置中心mysql配置为3306,自然就会出错了。

使用docker命令停止mysql容器:

docker stop mysql容器实例id

使用docker命令启动mysql容器,指定端口映射为3306:

docker run -p 3306:3306 -v $pwd/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

容器启动后再次运行项目,问题就解决了

最后

以上就是阳光流沙为你收集整理的error dial tcp 127.0.0.1:3306: connect: connection refused项目场景:问题描述原因分析:解决方案:的全部内容,希望文章能够帮你解决error dial tcp 127.0.0.1:3306: connect: connection refused项目场景:问题描述原因分析:解决方案:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(29)

评论列表共有 0 条评论

立即
投稿
返回
顶部