乐趣区

初学Spring连接MySQL数据库的问题和解决

零:前言

初学 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 的这种错误显示方式,或许也有它的道理,至于具体为什么,还要等自己更深入的学习之后才能找到答案。

退出移动版