一. 出现报错的情况
- ‘com.mysql.jdbc.Driver’ is deprecated.The new driver class is ‘com.mysql.cj.jdbc.Driver’
- com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector
- The server time zone value ‘Öйú±ê׼ʱ¼ä’ is unrec
二. 解决方法
2.1 解决’com.mysql.jdbc.Driver’ is deprecated.The new driver class is ‘com.mysql.cj.jdbc.Driver’
这是因为在使用c3p0获取数据库连接时,mysql8以后的版本都已经事先加载完mysql驱动了,所以我们需要做的是
- 下载最新的mysql的jdbc的jar包
- 在动态web项目中的WebContent文件夹->WEB-INF文件夹下,创建名为lib文件夹,将刚刚下载好的jdbc的jar包粘贴到lib文件夹里面
- 将lib里面的jar包全部add to build path
- 修改c3p0的xml配置信息,特别注意jdbcUrl和driverClass属性,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!-- named-config的name属性值就是当前配置的一套配置名
在创建连接池时可以根据配置名加载此套配置信息
-->
<named-config name="webDataSource">
<property name="jdbcUrl">jdbc:mysql://localhost:3306/bookstore?rewriteBatchedStatements=true</property>
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="user">root</property>
<property name="password">123456</property>
<!-- 最小连接数 -->
<property name="minPoolSize">5</property>
<!-- 最大连接数 -->
<property name="maxPoolSize">30</property>
<!-- 初始化的连接数 -->
<property name="initialPoolSize">10</property>
<!-- 需要时一次性创建的连接数 -->
<property name="acquireIncrement">5</property>
<!-- 缓存多少个Statement对象 -->
<property name="maxStatements">15</property>
</named-config>
</c3p0-config>
2.2 解决com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector
- 查看c3p0配置文件,看一下jdbcUrl属性的链接有没有写错,尤其是数据库名字、端口号经常会写错
- 查看c3p0配置文件的driverClass属性,修改成com.mysql.cj.jdbc.Driver
- 查看c3p0配置文件的user和password属性有没有写错
2.3 解决The server time zone value ‘Öйú±ê׼ʱ¼ä’ is unrec
出现此原因是我们在安装mysql的时候默认为美国的时区,而我们中国大陆要比他们迟8小时,采用+8:00格式
- ==打开你安装的mysql路径,找到并打开my.ini文件,如下图:
- 在my.ini文件中添加以下代码,注意,必须在mysqld节点内添加
default-time-zone='+8:00'
- 效果如下:
- 右击我的电脑->管理->服务和应用程序->MySQL,重启服务,如下图:
- 关闭myeclipse软件,重新启动即可