Tomcat服务器连接MySQL数据库出现空指针异常的解决方法

浏览器报错信息:

 错误原因是遇到了空指针异常,具体位置在DAO实现类中,获取预状态通道时connection.preparedStatement(); 

打印输出connection=getConnection();发现通过util包下的DruidUtil工具类获取的连接是null;

检查代码发现getConnection方法如果遇到SQLException会导致返回的connection为空,所以推测是从连接池中取出connection时遇到了SQLException

public class DruidUtil {

    private static DataSource ds;//连接池
    static{ //静态代码块,加载druid.properties文件,根据配置信息创建连接池
        try {
            Properties ppt = new Properties();
            ClassLoader classLoader = DruidUtil.class.getClassLoader();
            InputStream resourceAsStream = classLoader.getResourceAsStream("druid.properties");
            ppt.load(resourceAsStream);
//            System.out.println("_________________配置信息______________________"+ppt);
            ppt.load(DruidUtil.class.getClassLoader().getResourceAsStream("druid.properties"));
            ds = DruidDataSourceFactory.createDataSource(ppt);
//            System.out.println("------------------连接池信息------------------"+ds);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * 从连接池中取出一个连接给用户
     * @return
     */
    public static Connection getConnection(){
        try {
            return ds.getConnection();
        } catch (SQLException throwables) {
            //System.out.println("__________________遇到了SQLException throwables导致返回的connection为null,进而导致空指针异常______________");
            throwables.printStackTrace();
        }
        return null;
    }

   
}

控制台报错信息:

 根据控制台的输出,确定了SQLException出现的原因:

java.sql.SQLException: 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.
服务器时区值 '?й???????' 无法识别或代表多个时区。 如果要使用时区支持,则必须配置服务器或 JDBC 驱动程序(通过 serverTimezone 配置属性)以使用更具体的时区值。

解决方法:

在druid.properties文件中配置时区信息——url后面拼接:&serverTimezone=UTC

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值