今天在实现一个小demo的时候,被一个找不到数据库的问题坑了好久啊啊啊啊啊啊,记录一下,以后做事情一定要认真;另外,知识的掌握一定要扎实牢靠。
1、看起来很简单的问题
简单描述一下背景:
使用Spring boot创建一个服务提供者,选取了web,jpa,h2等进行简单支持。
由于是个demo级别的,所以也没有配置本地h2,只是配置了建表语句和数据sql,但就是这几个简单的步骤,就折腾了一个小时。。
编码完成之后,启动spring boot,失败…… 后来调整了yml配置,启动成功了。
本以为可以继续进行了,但在浏览器输入request url之后,却提示失败,查看了一下log,提示如下:
很容易看出来,是数据库找不到,于是检查了下建表语句,发现确实user写错了,竟然写成了usre……
2、头疼的问题
改了之后,发现还是不行,依旧提示这个错误。仔仔细细检查了所有的sql之后,发现还是不行,就很惆怅了。
于是,网上Baidu了一下,得到了N条不靠谱结果,后来找到一条看起来可行的方案:“认为是sql文件执行多次造成的数据混乱,在IDEA中执行mvn autorun:run -Prefresh-db-dev”。抱着试试看的心态,执行了命令,get到如下结果:
得到这个结果,之后,就围绕着这个问题进行了将近半个多小时的查询过程,发现无论是Baidu还是StackOverflow,都没什么好的解决方案。最重要的问题是,不知道问题出在什么地方,深扎这条路方向也
不确定是不是正确,就想先回头反思一下。
首先,因为此时的h2数据库没有本地化,始终是存在于内存的,所以每次重启都会新建一个,所以基本先排除
多次执行sql造成混乱的问题。
再次检查sql和对于data.sql,scheml.sql的配置,发现这两个sql被我放在了一个sql文件夹下,而yml中配置的classpath下没有sql文件名!
加上/sql之后,果然启动后刷新得到了数据。
就这么一个小小的问题,将近耗费了将近一个小时的时间,但这一个小时的时间并不是浪费。从中想想,我们还是能到得到一些处理问题的思路:
1、遇到问题后,先分解问题可能产生问题的原因,整理成不同的路线;
2、由简入繁,各个击破;
3、求助网络的时候,不要忙于相信,先分析是否自己的问题情景是否和文章描述相符或相近;
4、对于长时间找不到答案的问题,很可能不是个问题。