初建一個簡單的spring boot 項目,啟動后會報錯。
-
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException:
Error creating bean
with name
'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class
-
2019
-01
-27
14:
36:
35.101 INFO
5484 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService
'applicationTaskExecutor'
-
2019
-01
-27
14:
36:
35.104 INFO
5484 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
-
2019
-01
-27
14:
36:
35.116 INFO
5484 --- [ main] ConditionEvaluationReportLoggingListener :
-
-
Error starting ApplicationContext.
To display the conditions report re-run your application
with
'debug' enabled.
-
2019
-01
-27
14:
36:
35.123
ERROR
5484 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
-
-
***************************
-
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).
-
-
-
Process finished
with
exit code
1
報錯信息說明的很詳細:就是在項目啟動的時候在 resource目錄下沒有加載到配置信息;如果項目只是想簡單的啟動運行,不進行數據庫操作可以在 啟動類上做如下處理便可解決。
-
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
- 如果對數據庫操作有要求的話在application文件中加入配置
-
-
spring:
-
datasource:
-
url: jdbc: mysql:/ /localhost:3306/數據庫名稱?useUnicode= true&characterEncoding=UTF- 8&useSSL= false
-
username: 數據庫用戶名
-
password: 數據庫密碼
-
# 如果在pom 文件中沒有依賴數據庫連接這個會報紅,加入 ‘mysql-connector-java’ 即可,如果還是報紅的話,給出 <version>8.0.13</version> 具體版本號即可,如果還是不行,可能是其他引入的spring相關 jar 包的 pom 坐標依賴有沖突,刪除即可。但是在啟動后后台打印日志會報紅
-
#《Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is #`com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual #loading of the driver class is generally unnecessary.》
-
# 把驅動名稱:com.mysql.jdbc.Driver 換成 com.mysql.cj.jdbc.Driver 即可
-
driver- class-name: com.mysql.jdbc.Driver
-
-
-
spring:
-
datasource:
-
url: jdbc: mysql:/ /localhost:3306/數據庫名稱?useUnicode= true&characterEncoding=UTF- 8&useSSL= false
-
username: 數據庫用戶名
-
password: 數據庫密碼
-
driver- class-name: com.mysql.cj.jdbc.Driver
-
- 在spring xml配置文件中引用了數據庫地址 所以需要對:等進行轉義處理.但是在application.properties/或者application.yml文件並不需要轉義,錯誤和正確方法寫在下面了.
-
//錯誤示例
-
spring.datasource.url = jdbc:mysql\:
//192.168.0.20\:1504/f_me?setUnicode=true&characterEncoding=utf8
-
//正確示例
-
spring.datasource.url = jdbc:mysql:
//192.168.0.20:1504/f_me?setUnicode=true&characterEncoding=utf8
- yml或者properties文件沒有被掃描到,需要在pom文件中<build></build>添加如下.來保證文件都能正常被掃描到並且加載成功.
-
<!-- 如果不添加此節點mybatis的mapper.xml文件都會被漏掉。 -->
-
<resources>
-
<resource>
-
<directory>src/main/java
</directory>
-
<includes>
-
<include>**/*.yml
</include>
-
<include>**/*.properties
</include>
-
<include>**/*.xml
</include>
-
</includes>
-
<filtering>false
</filtering>
-
</resource>
-
<resource>
-
<directory>src/main/resources
</directory>
-
<includes>
-
<include>**/*.yml
</include>
-
<include>**/*.properties
</include>
-
<include>**/*.xml
</include>
-
</includes>
-
<filtering>false
</filtering>
-
</resource>
-
</resources>
-
如果是:
com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
加上 &serverTimezone=UTC 即可 。如:
-
com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server
time zone value
'Öйú±ê׼ʱ¼ä' is unrecognized
or represents more than one
time zone. You must configure either the server
or JDBC driver (via the serverTimezone configuration property) to
use a more specifc
time zone value
if you want to utilize
time zone support.
-
-
# 解決方案
-
druid.jdbcUrl=jdbc:mysql:
//localhost:
3306/ssm?useUnicode=true&characterEncoding=UTF-
8&serverTimezone=UTC
鏈接:https://www.jianshu.com/p/836d455663da