java notinited错误_java报错:com.alibaba.druid.pool.DruidDataSource.info {dataSource-1} inited

JDBC使用Druid连接池连接数据库的时候,遇到报错:com.alibaba.druid.pool.DruidDataSource.info {dataSource-1} inited,具体报错信息如下:

42e60c27cc739a6d48f84be0d246dc96.png

5e421d49d75d299b163d52cc9682d336.png

从网页上报错信息,可以看到是获取驱动名称错误。

排查:

这里使用了连接池工具类 DruidUtils.java 来加载数据库配置文件druid.properties

public class DruidUtils {

//1.定义成员变量

public static DataSource dataSource;

//2.静态代码块

static{

try {

//3.创建属性集对象

Properties p = new Properties();

//4.加载配置文件 Druid 连接池不能够主动加载配置文件 ,需要指定文件

InputStream inputStream = DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties");

//5. 使用Properties对象的 load方法 从字节流中读取配置信息

p.load(inputStream);

//6. 通过工厂类获取连接池对象

dataSource = DruidDataSourceFactory.createDataSource(p);

} catch (Exception e) {

e.printStackTrace();

}

}

、、、

}

想到可能是加载配置文件失败,所以debug启动项目,看到获取到的几个属性值都为空。

937cfd24f26dee8a0f6025aa6a185827.png

检查配置文件的配置,key值果然不对,最后进行更正,正确如下:

mysql5.0配置:

#mysql5.0的驱动名称

driverClassName=com.mysql.jdbc.Driver

#注册驱动,convertToNull,返回 null 来替代 0000-00-00 这样的日期

#加上zeroDateTimeBehavior是为了解决异常:java.sql.SQLException: Value ‘0000-00-00 00:00:00’ can not be represented as java.sql.Timestamp

url=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull

#连接数据库的用户名

username=root

#连接数据库的密码

password=123456

#初始化时池中建立的物理连接个数

initialSize=10

#最大的可活跃的连接池数量

maxActive=20

#获取连接时最大等待时间,单位毫秒,超过连接就会失效

maxWait=3000

mysql8.0配置:

#驱动加载

#mysql8.0的驱动名称

driverClassName=com.mysql.cj.jdbc.Driver

url=jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false

#连接数据库的用户名

username=root

#连接数据库的密码

password=123456

#初始化时池中建立的物理连接个数

initialSize=10

#最大的可活跃的连接池数量

maxActive=20

#获取连接时最大等待时间,单位毫秒,超过连接就会失效

maxWait=3000

可以看到,mysql 8.0 以后,java 的驱动包发生了变化,从 com.mysql.jdbc.Driver 变为 com.mysql.cj.jdbc.Driver。

还有url 的配置,如果是mysql8.0,里面必须配置一个时区(serverTimezone),com.mysql.cj.jdbc.Driver 需要这个时区 ;

否则会报错:

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.

3bcd509d05810eb5cbc109afc4a7899f.png

再次运行,加载成功,也能正常访问数据库,问题解决!

625b005ef4d1d3cdd368d454c147c58a.png

项目结构:

51e44c0f41c5f79bcd8ba1f3ab1b1509.png

注意事项:

1、使用的mysql数据库版本 和 依赖的驱动 jar的版本要相同,如果不同,会报错;

2、就是上面提到的驱动值driverClassName和url 的 配置,要和相应的mysql版本对应上。

本文地址:https://blog.csdn.net/u012660464/article/details/110236485

希望与广大网友互动??

点此进行留言吧!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值