零:前言
初学 Spring + Angular 才不到一周时间,刚打开第一个 Spring 的示例项目,在运行时就出现了错误。
代码如下:
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
Action:
Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
Disconnected from the target VM, address: '127.0.0.1:50367', transport: 'socket'
Process finished with exit code 1
又重新看了一次我所学习的教程,教程中只给了一个 Spring 开发手册的链接,却没有给出连接数据库的具体步骤,或许,老师的意思,是想让我们看开发文档自己学习。
于是,我打开了这个链接
Spring 的开发文档很具体,从环境要求到如何建立数据库、如何连接,都说的很清楚,只不过由于是英文,读起来有一些难度。
一:连接数据库
我们需要找到的,是设置数据库的那个配置文件,所以开发文档中许多内容我们并不需要。
终于,我找到了下面这一段:
大概的翻译内容是:Spring 给你提供了许多的默认设置,然而,对于数据库的配置你需要自己来进行。然后把这一段代码放在配置文件中:
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/db_example
spring.datasource.username=springuser
spring.datasource.password=ThePassword
我们需要把第二行的 localhost 改成自己的地址。
把第三行的 username 改成数据库的用户名,第四行是数据库的密码,如下
保存,启动,通过编译
(上图表示成功运行,请勿在意网页内容)
二、遇到错误以及解决
当软件能跑起来之后,继续写代码,却发现真正需要用到数据库的时候,报错了 …
“空白页”问题之前出现了很多次,初学的时候不知道报错的关键信息是什么,后来才知道与之前所学的 ThinkPHP 不同的是,最关键的信息没有放在第一行,而是最后一行的 Failed to obtain JDBC Connection; nested exception is java.sql.SQLSyntaxErrorException: Unknown database 'db_example'
我恍然大悟,它找不到 db_example, 原来是我由于比较粗心,只改了数据库的地址用户名密码,而忘了改库名 …
按照库名修改了配置文件之后:
再次运行,成功显示 JSON 对象。
细心很重要
后记
曾经学习的 ThinkPHP5.1,它的报错界面是这样的:
最醒目的位置,是最重要的信息,然后马上给出报错代码,无疑,这种显示方式,对于小白来说更友好。
当然 Spring 的这种错误显示方式,或许也有它的道理,至于具体为什么,还要等自己更深入的学习之后才能找到答案。