背景
之前在家里做了一个mybatis自定义框架,是使用mysql5.7作为数据库的。这些天在公司重新拉取了这个项目发现跑不起来报了这个错:
Connections could not be acquired from the underlying database!
原因
当然这个错误的原因有很多,之前在家是因为密码不对出了这个错,但这次讨论的是版本不同(5.7->8)所造成的影响。
解决方案
1.Jar包
2.数据源信息
解决Jar包问题
这块儿只要把Maven中关于数据库的Jar包提升到高版本就行了,我这个Demo没有用到连接池。只用到了JdbcConnector,所以连接池那块儿没有改也能运行
之前
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.17</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
修改之后
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
解决数据源信息问题
首先,之前的url链接是这样的。
<dataSource>
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql:///zdy_mybatis"></property>
<property name="username" value="root"></property>
<property name="password" value="wangjimima123"></property>
</dataSource>
Mysql8应该使用的URL是这样的(&就是&的意思,因为在xml里直接写&会报错)
<dataSource>
<property name="driverClass" value="com.mysql.cj.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/zdy_mybatis?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</dataSource>
结果
能正常运行啦!
源码分析
链接:(26条消息) 自定义简易MyBatis_Yan1less的小窝-CSDN博客