现象
开始之前,先上一张图:
从图片中分析,你的第一判断是什么?坑定是数据库密码不对,改密码就行了!90%的情况下,你的判断是对的;下面我们来看下剩下的那10%怎么回事?
请记住下面这两个密码
- 1e1
- 2E2
yml神奇数字:由全数字和唯一的字母e组合成的字符串
设置数据库密码为上面任意一个,在spring boot 项目的yml配置文件里,修改数据库密码,尝试启动下项目,看看原先能访问数据库的接口,还能访问吗?
必定会报和上面图片中一样的错误,明明密码写对了,程序还会报密码不对,见鬼了吧。
跟踪代码看下, 1e1 密码 在程序加载后,变成了10.0,能连上数据库才是见鬼了,同样的,2E2在程序加载后,变成了200.0
原因
1e1、2E2在经过程序加载之后,变成了浮点型数据,和数据库密码不一致,出现密码写对了,连不上数据库的情况。
解决办法
- 在yml文件中,配置密码的地方,为密码加上双引号,避免程序把他们处理成科学计数法
- 修改数据库密码,不要出现全数字和字母e的组合
延伸
- yml只要出现yml神奇数字的密码,就会出现上述情况;
- 不光是密码项会如此,yml配置文件中,所有配置项,只要满足yml神奇数字,就会出现异常现象
- yml神奇数字 本质上就是科学计数法