spring boot項目啟動報DataSource錯誤


初建一個簡單的spring boot 項目,啟動后會報錯。 


   
   
  
  
          
  1. 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
  2. 2019 -01 -27 14: 36: 35.101 INFO 5484 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
  3. 2019 -01 -27 14: 36: 35.104 INFO 5484 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
  4. 2019 -01 -27 14: 36: 35.116 INFO 5484 --- [ main] ConditionEvaluationReportLoggingListener :
  5. Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
  6. 2019 -01 -27 14: 36: 35.123 ERROR 5484 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
  7. ***************************
  8. APPLICATION FAILED TO START
  9. ***************************
  10. Description:
  11. Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
  12. Reason: Failed to determine a suitable driver class
  13. Action:
  14. Consider the following:
  15. If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
  16. If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
  17. Process finished with exit code 1

報錯信息說明的很詳細:就是在項目啟動的時候在 resource目錄下沒有加載到配置信息;如果項目只是想簡單的啟動運行,不進行數據庫操作可以在 啟動類上做如下處理便可解決。

 

  • @SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
        
        
       
       
               
  • 如果對數據庫操作有要求的話在application文件中加入配置
  • 
         
         
        
        
                
    1. spring:
    2. datasource:
    3. url: jdbc: mysql:/ /localhost:3306/數據庫名稱?useUnicode= true&characterEncoding=UTF- 8&useSSL= false
    4. username: 數據庫用戶名
    5. password: 數據庫密碼
    6. # 如果在pom 文件中沒有依賴數據庫連接這個會報紅,加入 ‘mysql-connector-java’ 即可,如果還是報紅的話,給出 <version>8.0.13</version> 具體版本號即可,如果還是不行,可能是其他引入的spring相關 jar 包的 pom 坐標依賴有沖突,刪除即可。但是在啟動后后台打印日志會報紅
    7. #《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.》
    8. # 把驅動名稱:com.mysql.jdbc.Driver 換成 com.mysql.cj.jdbc.Driver 即可
    9. driver- class-name: com.mysql.jdbc.Driver
    10. spring:
    11. datasource:
    12. url: jdbc: mysql:/ /localhost:3306/數據庫名稱?useUnicode= true&characterEncoding=UTF- 8&useSSL= false
    13. username: 數據庫用戶名
    14. password: 數據庫密碼
    15. driver- class-name: com.mysql.cj.jdbc.Driver
  • 在spring xml配置文件中引用了數據庫地址 所以需要對:等進行轉義處理.但是在application.properties/或者application.yml文件並不需要轉義,錯誤和正確方法寫在下面了.

   
   
  
  
          
  1. //錯誤示例
  2. spring.datasource.url = jdbc:mysql\: //192.168.0.20\:1504/f_me?setUnicode=true&characterEncoding=utf8

   
   
  
  
          
  1. //正確示例
  2. spring.datasource.url = jdbc:mysql: //192.168.0.20:1504/f_me?setUnicode=true&characterEncoding=utf8
  • yml或者properties文件沒有被掃描到,需要在pom文件中<build></build>添加如下.來保證文件都能正常被掃描到並且加載成功.

   
   
  
  
          
  1. <!-- 如果不添加此節點mybatis的mapper.xml文件都會被漏掉。 -->
  2. <resources>
  3. <resource>
  4. <directory>src/main/java </directory>
  5. <includes>
  6. <include>**/*.yml </include>
  7. <include>**/*.properties </include>
  8. <include>**/*.xml </include>
  9. </includes>
  10. <filtering>false </filtering>
  11. </resource>
  12. <resource>
  13. <directory>src/main/resources </directory>
  14. <includes>
  15. <include>**/*.yml </include>
  16. <include>**/*.properties </include>
  17. <include>**/*.xml </include>
  18. </includes>
  19. <filtering>false </filtering>
  20. </resource>
  21. </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 即可 。如:


   
   
  
  
          
  1. 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.
  2. # 解決方案
  3. druid.jdbcUrl=jdbc:mysql: //localhost: 3306/ssm?useUnicode=true&characterEncoding=UTF- 8&serverTimezone=UTC


鏈接:https://www.jianshu.com/p/836d455663da


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM