题记:前几天用JDBC连接MYSQL数据库的时候,出现了一些BUG,有代码层次的,也有设置层次的,

  下面的解决方法时我目前所遇到的,后期如果还有遇到的会进行补充。

一、出现:远程mysql_java.sql.SQLException: null, message from server: "Host 'xxx' is not allowed to connect

  很明显的意思就是当前数据库不允许我们进行远程连接。

  远程的机器B不允许机器A访问他的数据库。也就是说,我们要解决这个问题,就是要让机器B的数据库允许机器A访问,就搞定啦;

  立刻到cmd窗口中使用 >mysql -uroot  -proot -h192.168.1.88 -P3306 -Ddb10来连接服务器会显示错误,说明确实是无法通过远程连接到数据库的。

  【当初设置的时候没有保存截图,这里就没有放图了,但是有Err的明星错误的】

  注意:前提是使用  >mysql -uroot -proot   这条指令是可以连接到数据库的,不然就是你的环境变量或者是数据库的安装有问题了。MYSQL的安装请点击

  如下

  

  当进入到这个界面我们就可以进行对应的解决方案了

  1.   第一步:输入  use mysql
  2.   第二步:输入 show tables;

  

  再输入相关指令:

  •   第一步:select host from user;
  •   第二步:update user set host ='%' where user='root';
  •   第三步:select host form user;   [检查一下是否更新成功]

  

  然后进入计算机的服务界面,重新启动MYSQL的服务就可以了。

  

  再去cmd窗口使用远程连接,进入mysql目录就可以成功了。

  

  小结:当时整数据库的时候全部用了开发工具,也没有注意到该数据库是否允许远程连接的,一直都是进行本地连接,

  直到后面使用JDBC来连接数据库进行操作的时候才发现这个原因,有点懵懵的,哈哈

二、Exception in thread "main" java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 52.0

  上面这个错误是因为导入的用来连接的jar包和我们当前项目的jdk版本是不一样的,导致版本不一致而出错了

  

  

  

  出现问题原因-----分析 { JDK版本不一致的问题 }

  •   在eclipse中开发的项目有个Java build path中可以配置的JDK
  •   java compiler中可以配置compiler level{eclipse>windows>preferences>java>compiler>compiler compliance level}

  区别

  •   build path的JDK版本是你开发的时候编译器需要使用到的,就是你在eclipse中开发代码,给你提示报错的,编译的过程;
  •   java compiler compliance level中配置的编译版本号,这个编译版本号的作用是,你这个项目将来开发完毕之后,要放到服务器上运行,那个服务器上JDK的运行版本。

  问题就是,build path中配置1.7的JDK,java compiler compliance level中配置的1.7,但是程序运行需要的是1.8的JDK,就报了那个错误。

  在eclipse中进行开发的时候,build path 中JDK进行类库的编译(就是你使用类在不在这个JDK中),

  java compiler compliance level是对这个项目语法的编译(就是你的项目中语法的正确与否),在开发的过程中,这两个地方是都起作用的。

  总结:build path 和 java complier compliance level和服务器配置的JDK保持一致,就不会出现任何问题的

  这个问题的解决方法也是很简单的,首先去查看自己的导入的jar包是在哪个jdk版本下面运行的,然后再更改我们项目的jdk版本号,或者是换用和我们一样版本号的jar包就可以解决了,

  这里我导入的是在jdk8上运行的jar包,所以我将我的项目改为jdk8的,

  查看我的项目目前的版本是:1.7的

  

  

  第一步、

  

  第二步、

  

  第三步、

  

  这个时候再查看我们的项目JDK版本是1.8的了。

3、上面是解决了由于版本不一致的情况,但是当我运行的时候,会报下面的错误:  

  Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and

  manual loading of the driver class is generally unnecessary.

  

  这个就很简单了,白问翻译过来都知道了,就是要换用新的类了,将使用com.mysql.jdbc.Drive的换为com.mysql.cj.jdbc.Driver即可,这是由于我当前使用的是最新的jdbc驱动包,里面的API有跟新了

4、当我把API换为新的了,但是运行的时候又出错了,这回的错是:

  Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: 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.

  

  仔细阅读,发现是与时间设置相关,仔细研究后发现,是因为新版的Mysql中的时区默认设置与本地时区之间是不同的,因此会报错。

  解决方法即为修改时区设置即可,可以在连接数据库的url的最后添加这样一段代码 ?serverTimezone=UTC ,就可以解决问题了。

  事例:

  原来报错的:String url = "jdbc:mysql://176.129.8.53:3306/db10";

  改正后的:String url = "jdbc:mysql://176.129.8.53:3306/db10?serverTimezone=UTC";

总结:这是对使用MYSQL的JDBC驱动包进行数据库的操作的时候总结出来的一些解决方案,

然后分享出来自己当时的一步一步的解决步骤,肯定是不全的,但是就目前而言是可以解决一大部分的错误的了,

希望可以帮到到家解决对应的BUG,少走一些弯路,谢谢。

                                                                                                                            2019-03-09 13:46:08

使用JDBC连接数据库的一些BUG的更多相关文章

  1. JDBC连接数据库

    JDBC连接数据库 1.加载JDBC驱动程序. Class.forName("com.mysql.jdbc.Driver"); 建立连接,. Connection conn = D ...

  2. java开发中JDBC连接数据库代码和步骤

    JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...

  3. java开发JDBC连接数据库详解

    JDBC连接数据库 好文一定要让大家看见 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机) ...

  4. 【转】Java开发中JDBC连接数据库代码和步骤总结

    (转自:http://www.cnblogs.com/hongten/archive/2011/03/29/1998311.html) JDBC连接数据库 创建一个以JDBC连接数据库的程序,包含7个 ...

  5. 使用配置文件来配置JDBC连接数据库

    1.管理数据库连接的Class 代码如下: package jdbcTest;import java.sql.Connection;import java.sql.DriverManager;impo ...

  6. Java中JDBC连接数据库代码和步骤详解总结

    JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤:         1.加载JDBC驱动程序:         在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Jav ...

  7. 完整java开发中JDBC连接数据库代码和步骤

    JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...

  8. JDBC连接数据库(PreparedStatement)

    PreparedStatement是在数据库端防止SQL注入漏洞的SQL方法这里演示了一些基本使用方法同样使用Oracle数据库,之前已经手动建立了一张t_account表数据库代码参见上一篇< ...

  9. JDBC连接数据库演示

    今天重新学习了JDBC连接数据库,使用的数据库是Oracle,在运行前已经手动建立了一张t_user表,建表信息如下: create table t_user( card_id ) primary k ...

随机推荐

  1. bzoj 1901 Dynamic Rankings (树状数组套线段树)

    1901: Zju2112 Dynamic Rankings Time Limit: 10 Sec  Memory Limit: 128 MB Description 给定一个含有n个数的序列a[1] ...

  2. HDU6129 规律

    LINK 题意:n个数进行m次前缀和异或和后的情况,其中$n,m(1\leq n\leq2\times10^5,1\leq m\leq10^9)$. 思路:看到m这么大,肯定要分解m的,又是异或和,二 ...

  3. JVM学习二:JVM之类加载器之加载分析

    前面一遍,我们对类的加载有了一个整体的认识,而这一节我们细节分析一下类加载器的第一步,即:加载. 一.概念 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区 ...

  4. 关于Java泛型深入理解小总结

    1.何为泛型 首先泛型的本质便是类型参数化,通俗的说就是用一个变量来表示类型,这个类型可以是String,Integer等等不确定,表明可接受的类型,原理类似如下代码 int pattern; //声 ...

  5. 【NOI2017】游戏 2-sat算法

    [题目]LibreOJ [题意]n场游戏,有三种车ABC,给定长度为n的字符串,'a'表示不能选A,'b''c'同理,'x'表示不限,至多d个'x'.有m个限制(i,hi,j,hj)表示如果第i场选择 ...

  6. yii2 自动登录解读

    今日遇到一个需要将当前用户,全部登出系统(YII2框架制作)重新登录的需求 仔细回忆一遍,Yii2的登录流程,竟然有些不太明白,于是下午空闲时 重新看了下Yii2的用户登录源码 文件位于YII2项目下 ...

  7. HDU 5995 Kblack loves flag (模拟)

    题目链接 Problem Description Kblack loves flags, so he has infinite flags in his pocket. One day, Kblack ...

  8. python模块之imghdr检测图片类型

    1. imghdr是什么 imghdr是一个用来检测图片类型的模块,传递给它的可以是一个文件对象,也可以是一个字节流. 能够支持的图片格式: 2. 如何使用 提供了一个api叫做imghdr.what ...

  9. 5、Linux操作系统介绍

    1操作系统的作用·是现代计算机系统中最基本和最重要的系统软件·是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩展·主要作用是管理好硬件设备,并为用户和应用程序提供一个简单的接口,以便于使用·而其 ...

  10. Window 平台安装 Python:

    Window 平台安装 Python: 打开WEB浏览器访问http://www.python.org/download/ 在下载列表中选择Window平台安装包,包格式为:python-XYZ.ms ...