Java+SSM框架+mysql8连接数据库的一些坑

缘起

昨晚导入一个ssm框架的项目,访问请求的时候总跟我提无法创建数据库连接的问题,这台新电脑刚刚装系统不久,赶了个新潮,装了个mysql8

错误信息

Type Exception Report

Message Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:981)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:860)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
.......

问题定位


image.png

那就是连不上数据库咯
网上找了好多解决方案,不怎么奏效
后来终于知道是MySQL8的一些特性的问题
首先更改下面这玩意

<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>

再去更改连接驱动器的版本

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
            <scope>runtime</scope>
        </dependency>

改动连接url的配置为

useSSL=false

再跑!


image.png

回去看问题,划拉划拉到最后发现了bug


image.png

时区设置的不对
改动如下:
serverTimezone=UTC

再跑


image.png

果然,成功运行
附上完整的源配置

    <!-- 配置数据源 -->
    <bean id="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url"
                  value="jdbc:mysql://localhost:3306/gitchat_ssm_demo_db?useUnicode=true&amp;characterEncoding=utf8&amp;autoReconnect=true&amp;useSSL=false&amp;serverTimezone=UTC"/>
        <!-- 改为你的地址即可 -->
        <property name="username" value="root"/>
        <property name="password" value="admin"/>
    </bean>

另外就是在pom里面改动数据库驱动的版本,这个上面有


image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 《湮灭》这部电影是一个典型的科幻片,又有点生物片的赶脚。看完之后,全身冷汗,甚至不敢睡觉了,好怕自己身上会长出很多...
    keke奇遇记阅读 3,379评论 0 0
  • 文/苏门映雪 上周去参加儿子幼儿园的家长会,老师其中一句话让我感触颇深,她说:要给孩子选择的权利,也要给孩子无聊的...
    苏门映雪阅读 3,255评论 47 40
  • 也许是因为晚上回来路上遇到了许妹妹,昔日的伙伴,招呼声噎在喉却在犹豫中错过,清晨梦中回到电力事业部的时光,大家在给...
    凉茶2018阅读 2,405评论 0 0

友情链接更多精彩内容