有时候数据代码怎么看都是正确的但是往数据库里面插入数据的时候会报错很长很长,那么很有可能就是数据连接驱动版本和你的数据库版本不匹配问题。

问题1

Loading classcom.mysql.jdbc.Driver’. This is deprecated. The new driver class iscom.mysql.cj.jdbc.Driver’. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

报错信息如上:原因在于你的数据库连接驱动也就是mysql-connector-java这个东西的版本和驱动类不匹配。

下面用一段jdbc操纵数据库的代码为例。

public class JDBCDemo {public static void main(String[] args) throws Exception {//注册驱动Class.forName("com.mysql.jdbc.Driver");//连接String url = "jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";String username = "root";String password = "123456";Connection conn = DriverManager.getConnection(url, username, password);//定义sqlString sql1 = "insert into stu(name, id) values ('zhangsan', 3);";String sql2 = "insert into stu(name, id) values ('lisi', 4);";//获取执行sql的对象Statement stmt = conn.createStatement();try{//相当于开启事务conn.setAutoCommit(false);//执行两次事务stmt.executeUpdate(sql1);stmt.executeUpdate(sql2);//事务提交conn.commit();}catch (Exception e){//如果出错就回滚conn.rollback();e.printStackTrace();}//释放资源stmt.close();conn.close();}
}

在注册驱动那里,Class.forName方法意思是使用Class这个类下面的静态方法forName,使用类加载器将com.mysql.jdbc下的Driver加载到内存中。注意,这里面的com.mysql.jdbc是路径名,Driver是类名。

上述Driver类存放在com.mysql.jdbc路径下是在mysql-connector-java 5版本之前,自从mysql-connector-java 8.0.7开始,Driver类被放在了com.mysql.cj.jdbc目录下。

所以从mysql-connector-java 8.0.7开始,注册驱动要写com.mysql.cj.jdbc.Driver

比如说下面我这段druid.properties配置文件中的driverClassName=com.mysql.cj.jdbc.Driver,意思是驱动是com.mysql.cj.jdbc包下的Driver类。

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/travel?useSSL=false
username=root
password=123456
initialSize=5
maxActive=10
maxWait=3000

问题2

问题描述:发送请求之后没有响应,不报错,但是也无法对数据库进行任何操作。或者报错无法连接数据库或者空指针情况。

原因:连接驱动和数据库版本不匹配。

数据库连接驱动的版本也不是随便选的。在mysql官网的连接驱动8.0.7页面中,我们可以看到官网解释的很清楚

MySQL Connectors and other MySQL client tools and applications now synchronize the first digit of their version number with the (highest) MySQL server version they support. This change makes it easy and intuitive to decide which client version to use for which server version.

mysql的连接驱动版本和数据库版本号的第一个数字是对应的,也就是说,mysql数据库版本号如果是8开头,那么你的连接驱动版本也应该是8开头才对,如果你的mysql版本是5.5,但是你的驱动是8.0.7,那么就会报一些奇怪的错,比如,数据库无法连接,can't connect to the database

解决方法:

更改驱动版本和数据库版本一致,比如你的mysql是8.0,那么mysql-connector-java就用8.0.7或者更高版本。

mysql.cj.jdbc.Driver报错或者数据库Nullpointer报错相关推荐

  1. IDEA连接Mysql报错: 未找到驱动程序类 ‘com.mysql.cj.jdbc.Driver‘.  Change driver class

    报错详细内容:未找到驱动程序类 'com.mysql.cj.jdbc.Driver'. Change driver class 报错原因:Mysql版本为5.0,找不到com.mysql.cj.jdb ...

  2. pyspark报错java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver

    完整报错如下: Traceback (most recent call last):File "<stdin>", line 6, in <module>F ...

  3. 解决com.mchange.v2.c3p0.DriverManagerDataSource. Could not load driverClass com.mysql.cj.jdbc.Driver报错

    解决com.mchange.v2.c3p0.DriverManagerDataSource. Could not load driverClass com.mysql.cj.jdbc.Driver报错 ...

  4. 报错:java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver at java.base/jdk.internal.loader.Bui

    前言必读 读者手册(必读)_云边的快乐猫的博客-CSDN博客 一.遇到问题 : java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver   ...

  5. 报错:dataSource init error java.sql.SQLException: com.mysql.cj.jdbc.Driver

    解决方法dataSource init error java.sql.SQLException: com.mysql.cj.jdbc.Driver

  6. 数据库加载驱动问题(java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver)

    java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver 遇到此问题,首先检查IDEA外部库中是否有mysql数据库驱动.如下所示: 如果发 ...

  7. spring boot 2.0采用com.mysql.cj.jdbc.Driver数据库驱动引发的系统时间不一致问题

    首先简单描述一下项目情况,老板新注册了一家公司,既然有公司了肯定得有个公司门户网站.现在已经是web 2.0时代了,网站内容不可能再像以前那样全部采用静态html页面.于是开发了一个内容管理系统,简称 ...

  8. com.mysql.cj.jdbc.Driver报红解决方法

    com.mysql.cj.jdbc.Driver报红 #配置数据库连接信息 datasource: url: jdbc:mysql://localhost:3306/mybatis?serverTim ...

  9. com.mysql.cj.jdbc.Driver和serverTimezone=GMT%2B8 数据库的配置

    com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别与设置 新的改变 设定值为 错误消失 spring:messages:encoding: UTF- ...

最新文章

  1. Keras中神经网络可视化模块keras.utils.vis_util 的安装
  2. Oracle 11g 新特性 -- 只读表(read-only table)说明
  3. Linux添加用户(user)到用户组(group)
  4. Unity与Android交互
  5. 风变的python课程怎么样_风的解释|风的意思|汉典“风”字的基本解释
  6. 单机安装oracle,单机安装oracle系统
  7. linux如何拷贝iphone文件夹,IPhone 手机如何和 Deepin 系统共享文件
  8. Tensorflow中与张量形状有关的操作
  9. easyui datagrid的getSelections只获取一行问题
  10. 巧用Linux 命令来拆分Windows下的大文件
  11. 如何使用 Numbers 筛选出特定种类的资料?
  12. [渝粤教育] 西南科技大学 信息组织与检索 在线考试复习资料2021版
  13. shell中awk,find,grep学习
  14. U盘制作成系统盘后怎么恢复成原样?
  15. 人工智能走过了怎样的70年?
  16. MySQL 表的建立与多表联结查询
  17. Gilma(ILMerge GUI)汉化版发布
  18. 计算机排序操作步骤,win7电脑更改磁盘卷标排列顺序的操作步骤-电脑自学网
  19. 【干货】java开发自定义报表
  20. 乌镇步入“一脸游”时代:刷脸完成景区入园和吃住游

热门文章

  1. 在EasyUI项目中使用FileBox控件实现文件上传处理
  2. LeetCode 2220. 转换数字的最少位翻转次数(位运算)
  3. iOS Charts裤绘制蜡烛图
  4. 收集的seo优化的些基础知识
  5. 求俄罗斯套娃信封问题——C++
  6. tedu斌-Web笔记2112-6
  7. 海外社媒营销Pinterest运营之外贸朋友、初学者如何使用 Pinterest开发外贸客户(1)
  8. 【现代机器人学】学习笔记十二:轮式移动机器人
  9. arctan查表法_查表法
  10. nslookup (信息来源:火狐论坛)