• 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

  • 相关阅读:
    spring相关记录
    xshell不能连接VM中的ubuntu
    MySQL 获得当前日期时间(以及时间的转换)
    struts2 action获取ajax提交数据中文乱码问题
    Write operations are not allowed in read-only mode (FlushMode.NEVER/
    在Action中以Struts2的方式输出JSON数据
    javascript 对象数组排序
    期待2015
    Mysql 导出数据库和指定表中的数据
    Ajax跨域问题
  • 原文地址:https://www.cnblogs.com/jpfss/p/11308668.html
Copyright © 2020-2023  润新知