EddieGuo的技术专栏 A Java Beginner

Ssm框架报错500问题总结

2018-08-14

阅读:


SSM框架下服务器500报错几个问题汇总

作为J2EE新手,在学校学习接触了hibernate框架,后来渐渐接触到mybatis框架,它比起hibernate来是一个轻量级,半自动化的框架, sql语句写在Mapper.xml文件下降低了代码的耦合性,也更易于sql查询的优化和特殊sql的定制编写。 这几天跟着网上教程一步一步手动搭载出来第一个ssm框架,过程中也遇到了不少坑,现在将这些坑都记录下来,一方面是作为自己学习 的总结积累,另一方面希望能帮助到他人。

环境和各框架版本

  • jdk1.8
  • mysql-8.0.11
  • mybatis-3.4.6

Mysql驱动

mysql5及之前的版本使用的是旧版驱动,mysql6以及之后的版本需要更新到新版驱动

浏览器报错如下

 Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database!

log4j日志显示

java.sql.SQLException: No suitable driver

解决方法

com.mysql.jdbc.Driver 改为 com.mysql.cj.jdbc.Driver

MysqlTimeZone

报错如下

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.

解决方法

在数据库连接属性文件url后面加上&serverTimezone=GMT%2B8

解决方法2

此问题产生的根本原因就是mybatis读取系统时间出现了问题,默认读取CST时间是美国中部时间 Central Standard Time (USA) UT-6:00 所以手动在sql数据库中修改CST时间为 China Standard Time UT+8:00

mysql> set time_zone = '+8:00'

mysql> set global time_zone= '+8:00'

mysql> flush privileges

c3p0连接池

之前hibernate的在全局配置文件中用的原生的DataSource接口org.hibernate.connection.DatasourceConnectionProvider 这次使用的是c3p0连接池,一开始使用的是0.9.1版本,一直报错也找不出来原因,后来更新到0.9.5.2版本就ok了

另一问题是最最大的坑,关于数据库配置文件 报错如下

Access denied for user 'xxx'@'localhost' (using password: YES)

大致意思就是username没有读取到导致无法连接数据库进行操作

解决方法

数据库属性配置文件中的

  • url
  • driver

要加 前缀 改成

  • jdbc.url
  • jdbc.driver

上一篇 First Note

下一篇 Maven初学笔记

Comments

Content