赞
踩
项目打包后启动出现了这个异常: ERR Client sent AUTH, but no password is set。
原因是:redis-server 服务端没有设置密码,但是客户端是带着密码发送验证的。
redis-server 服务端修改对应配置文件,然后重启服务
这里是我犯的错误
检查springboot打包后的配置文件application.yml、application-prod.yml等。
springboot 加载配置文件的优先级顺序依次是:–file:./config/、–file:./、 –classpath:/config/ 、–classpath:/
以上顺序按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级的配置内容会覆盖低优先级配置的内容,其中配置文件中的内容是互补配置,即
存在相同的配置内容,高优先级的内容会覆盖低优先级的内容
存在不同的内容的时候,高优先级和低优先级的配置内容取并集
我这里的问题就出在了这个并集上。我打包的时候,资源目录(classpath)下的application-prod.yml文件中, redis 参数设置了password属性的值,但是我打包完成之后,我在打好的jar包工程根目录下有重新添加了一个application-prod.yml文件,其中redis的参数没有添加password属性(因为redis-server 本身没有设置密码,所以这里直接没有添加password这个属性)。
结果工程启动的时候,根据配置文件的加载规则,redis的其他参数加载的是工程根目录下的application-prod.yml文件中配置的属性值,password参数加载了项目资源目录(classpath)下的application-prod.yml文件中的值,两个配置文件中redis参数的合集成为了我程序中实例化jedis客户端对象的属性。
而我启用的redis-server 本身没有设置密码的,所以在程序调用jedis客户端对象操作的时候,报了如下的错误:
redis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set
处理方法:
工程根目录下的application-prod.yml文件中配置redis.password属性值为空字符串;
或者删除资源目录(classpath)下的application-prod.yml文件中的redis.password属性。
总之,确保配置文件加载完之后的配置内容的合集是你想要的结果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。