从consule里读取的mysql配置为空

来源:4-8 完善Consule配置

文刀走云

2022-03-18


http://img.mukewang.com/szimg/62347eb6096181b112041272.jpg

http://img.mukewang.com/szimg/62347ee309694c0013350797.jpg

从consule的key/value里读取的mysql配置为空,检查了mysql和数据库都是正确的,可能还有什么原因呢


更新:

我使用的go1.17,从common/mysql.go里的config.get(),定位并追踪打印了github.com\micro\go-micro\v2@v2.9.1\config\reader\json\values.go这个文件里的get()方法,发现get()被调用了5次,其中第三/四次都成功获取到了consul的值,但是第五次又被替换为了null,后面不知道怎么弄了,还请老师试着解答一下,谢谢了

http://img.mukewang.com/szimg/623492c509a4902f12671381.jpg

http://img.mukewang.com/szimg/6234924309c344f912821405.jpg

写回答

3回答

慕瓜9063200

2022-12-21

老铁我的问题和你一样,也是获取不到mysql配置,打印出来都为空,现在按照你的方法定位追踪get()方法,也是第三、四次获取到了consul中的值,现在这个问题你解决了吗

0
5
慕瓜9063200
回复
Cap
老师这个问题现在解决了,GetConsulConfig()函数里面通过config, err := config.NewConfig()初始化配置,然后通过这个config.Load()加载配置,问题就出在这里,这个config重名了,它是变量名也是一个包名,而且这个config变量和config包都有Load()方法,就是因为用错了config包的Load方法才导致获取不到consul的配置。 老师,另外我还有疑问func GetConsulConfig(host string, port int64, prefix string) (config.Config, error) { consulSource := consul.NewSource( consul.WithAddress(host+":"+strconv.FormatInt(port, 10)), consul.WithPrefix(prefix), consul.StripPrefix(true), ) cf, err := config.NewConfig() if err != nil { return cf, err } err = cf.Load(consulSource) return cf, err } 这个consul.NewSource返回的是什么,是consul里面的配置吗,config,err := config.NewConfig()是配置初始化,那返回的config是什么
2022-12-21
共5条回复

慕慕5180435

2022-09-10

//img.mukewang.com/szimg/631c5a050919ee3800000000.jpg我这里把变量名字从config改为cf就好了


0
0

Cap

2022-03-22

重复执行都是固定的 5次?

0
1
文刀走云
是的,重复执行了好几次,那个get()方法都是固定执行5次
2022-03-22
共1条回复

Go微服务入门到容器化实践,落地可观测微服务项目

这可能是你全面提升Go微服务能力的好机会

866 学习 · 322 问题

查看课程