【问题标题】:Cant connect to mysql database无法连接到mysql数据库
【发布时间】:2016-12-03 02:41:51
【问题描述】:

我在尝试连接到本地 mysql 数据库时遇到一个奇怪的异常。我正在构建 spring mvc 应用程序。

这就是我配置 DriverManagerDataSource 的方式:

@Bean
public DriverManagerDataSource dataSource(){
    DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
    driverManagerDataSource.setDriverClassName("com.mysql.jdbc.Driver");
    driverManagerDataSource.setUrl("jdbc:mysql://localhost:3306/test");
    driverManagerDataSource.setUsername("****");
    driverManagerDataSource.setPassword("****");
    return driverManagerDataSource;
}

这些是我尝试连接的日志详细信息:

    root cause

org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: The server time zone value '�rodkowoeuropejski czas letni' 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.
    org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
    org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:394)
    org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:474)
    org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:484)
    com.packt.webstore.domain.repository.impl.CustomerRepositoryImpl.getAllCustomers(CustomerRepositoryImpl.java:35)
    com.packt.webstore.controller.HomeController.showCustomers(HomeController.java:36)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:497)
    org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)

我发现mysql-connector-java一定有问题。我将版本从 6.0.3 更改为 5.1.39。我刚刚更改了 pom.xml 文件中的版本

 <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.39</version>
    </dependency>

【问题讨论】:

  • 您使用的是什么版本的 Oracle JDBC?
  • 好吧,要使用它,您只需将 dependency 标签添加到您的 pom.xml 文件中,Maven 将为您完成所有工作(如果您使用的是 Maven)
  • 看来您遇到的问题也可能与this 有关。
  • 这还没有解决?
  • 看来可能是bug,升级驱动就不会再出现问题了。

标签: java mysql spring


【解决方案1】:

将您的 jdbc 网址替换为 jdbc:mysql://localhost:3306/db?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC 我希望它有效

【讨论】:

    【解决方案2】:

    根据堆栈错误。你应该指定你的时区值。添加here是同一个问题。

    【讨论】:

      猜你喜欢
      • 2014-01-25
      • 1970-01-01
      • 2018-02-06
      • 2016-12-13
      • 2013-03-05
      • 2012-12-08
      • 2019-07-29
      • 2014-11-25
      相关资源
      最近更新 更多