`

mysql 6.x 驱动使用 mysql-connector-java 6.x

 
阅读更多

一. 升级mysql-connector-java.6.0.6:

 

MySQL 的6.x 驱动发布已经有一段时间了,准备从原先的5.1.39更新到6.0.6。

更新 jar

然后启动项目,

 

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.
[WARNING] Unable to create initial connections of pool.
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.
 at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:569)
 at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:537)
 at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:527)
 at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:512)
 at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:480)
 at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:498)
 at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:494)

 

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.

新的驱动类,位置有了变化,修改配置:

driver_class=com.mysql.jdbc.Driver

改为:

driver_class=com.mysql.cj.jdbc.Driver


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.

这句话说明必须知道时区:

修改URL配置

jdbc_url=jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC

我完整的URL配置

jdbc:mysql:///test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=false

重新启动项目测试,成功启动并且正常增删改查

 

二. java连接MySql数据库zeroDateTimeBehavior:

 

二. java连接MySql数据库 zeroDateTimeBehavior:

 

JAVA连接MySQL数据库,在操作值为0timestamp类型时不能正确的处理,而是默认抛出一个异常,就是所见的:java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 7 to TIMESTAMP。这一问题在官方文档中有详细说明,详见如下链接:

http://bugs.mysql.com/bug.php?id=19274

http://dev.mysql.com/doc/refman/5.5/en/connector-j-installing-upgrading.html

 

JDBC连接串中有一项属性:zeroDateTimeBehavior,可以用来配置出现这种情况时的处理策略,该属性有下列三个属性值:

exception:默认值,即抛出SQL state [S1009]. Cannot convert value....的异常;

convertToNull:将日期转换成NULL值;

round:替换成最近的日期即0001-01-01

 

因此对于这类异常,可以考虑通过修改连接串,附加zeroDateTimeBehavior=convertToNull属性的方式予以规避,例如:

jdbc:mysql://localhost:3306/mydbname?zeroDateTimeBehavior=convertToNull

 

   从另一个层面讲,这类异常的触发也与timestamp赋值的操作有关,如果能够在设计阶段和记录写入阶段做好逻辑判断,避免写入 '0000-00-00 00:00:00'这类值,那么也可以避免出现 Cannot convert value '0000-00-00 00:00:00' from column N to TIMESTAMP的错 误。

 

 

MySQL Jdbc驱动在默认情况下会无视executeBatch()语句,把我们期望批量执行的一组sql语句拆散,一条一条地发给MySQL数据库,直接造成较低的性能。

 

只有把rewriteBatchedStatements参数置为true, 驱动才会帮你批量执行SQL (jdbc:mysql://ip:port/db?rewriteBatchedStatements=true)。不过,驱动具体是怎么样批量执行的? 你是不是需要看一下内幕,才敢放心地使用这个选项? 下文会给出答案。

 

另外,有人说rewriteBatchedStatements只对INSERT有效,有人说它对UPDATE/DELETE也有效。为此我做了一些实验(详见下文),结论是: 这个选项对INSERT/UPDATE/DELETE都有效,只不过对INSERT它为会预先重排一下SQL语句

 

注:本文使用的mysql驱动版本是5.1.12

分享到:
评论

相关推荐

    mysql-connector-java-x.x.x MySQL驱动包下载

    mysql-connector-java-5.0.5.jar mysql-connector-java-5.1.6.jar mysql-connector-java-5.1.18.jar mysql-connector-java-5.1.21.jar mysql-connector-java-5.1.35.jar mysql-connector-java-5.1.39.jar mysql-...

    mysql5.x最新版本驱动 mysql-connector-java-5.1.47.rar

    `mysql-connector-java-5.1.47`是针对MySQL 5.x版本的一个特定版本的驱动程序,它是Java Database Connectivity (JDBC) API的一部分,允许Java开发者在Java应用程序中执行SQL语句,管理数据库连接,以及处理数据库...

    mysql-connector-java-5.1.31.rar

    mysql-connector-java-5.1.31.rarmysql-connector-java-5.1.31.rarmysql-connector-java-5.1.31.rarmysql-connector-java-5.1.31.rarmysql-connector-java-5.1.31.rarmysql-connector-java-5.1.31.rarmysql-...

    mysql-connector-java-5.1.49

    mysql57驱动jar包mysql-connector-java-5.1.49 mysql57驱动jar包mysql-connector-java-5.1.49 mysql57驱动jar包mysql-connector-java-5.1.49 mysql57驱动jar包mysql-connector-java-5.1.49 mysql57驱动jar包mysql-...

    mysql-connector-java-5.1.46-bin.jar和mysql-connector-java-5.1.27-bin.jar

    - `mysql-connector-java-5.1.46-bin.jar` 和 `mysql-connector-java-5.1.27-bin.jar` 是Java的归档(Archive)文件,它们包含了MySQL Connector/J的所有类和资源,供Java虚拟机(JVM)加载和使用。`bin`通常表示这...

    mysql-connector-java-5.1.40.zip和mysql-connector-java-5.1.10.jar

    在实际开发中,你可以将`mysql-connector-java-5.1.10.jar`添加到项目的类路径(classpath)中,或者在Maven或Gradle等构建工具的依赖管理中指定对应的版本,以确保Java应用能够找到并使用这个驱动。 总结,`mysql-...

    mysql驱动(mysql-connector-java-5.1.41.jar+mysql-connector-java-8.0.17.jar)

    MySQL驱动是连接Java应用程序与MySQL数据库的关键组件,它实现了Java Database Connectivity (JDBC) API,使得Java开发者能够通过编写Java代码来操作MySQL数据库。这里提到的两个版本——mysql-connector-java-...

    mariadb-java-client-2.4.0.jar和mysql-connector-java-8.0.11.jar驱动

    mariadb-java-client-2.4.0.jar和mysql-connector-java-8.0.11.jar驱动 驱动信息。mm-mysql-2.0.13-bin.jar 这些jar包都可以驱动

    mysql-connector-java-5.1.25, mysql 5.7.31亲测有效

    `mysql-connector-java-5.1.25.jar`是这个驱动程序的二进制文件,包含了Java类和其他资源,用于连接到MySQL服务器并执行SQL查询。这个特定的版本兼容性广泛,适用于许多基于Java的应用场景。当下载并将其添加到项目...

    mysql-connector-java-8.0.19.jar MySQL 连接驱动

    mysql-connector-java-8.0.19.jar 截至 2020-03 最新版 MySQL 连接驱动

    Mysql和Oracle链接驱动,mysql-connector-java-5.1.39.jar

    支持Mysql5.7及以下,Oracle11,Oracle12等链接驱动 mysql-connector-java-5.1.39.jar,mysql-connector-java-8.0.26.jar ojdbc8.jar,ojdbc8_g.jar

    mysql-connector-java-5.1.49.jar

    在使用"mysql-connector-java-5.1.49.jar"时,开发者通常需要将其添加到项目的类路径中,以便Java虚拟机在运行时能找到并加载这个驱动。在现代的构建工具如Maven或Gradle中,这可以通过依赖管理来实现。在没有构建...

    mysql-connector-java-5.1.5-bin.jar mysql-connector-java-5.1.40-bin

    标题中的"mysql-connector-java-5.1.5-bin.jar"和"mysql-connector-java-5.1.40-bin"分别代表了两个不同版本的MySQL Connector/J,5.1.5和5.1.40。这些版本号表明了该驱动程序的发布日期和更新状态,一般来说,更高...

    mysql-connector-java-5.0.X.rar

    6. mysql-connector-java-5.0.8-bin.jar:这是5.0.8版本的驱动,适用于连接MySQL 5.0系列的数据库服务器,与5.1.x系列相比,可能存在兼容性或功能上的差异。 使用这些驱动时,开发者需要将对应的JAR文件添加到Java...

    mysql-connector-java-8.0.28.tar.gz

    在实际使用中,开发人员需要将`mysql-connector-java-8.0.28.jar`添加到Java项目的类路径(classpath)中,或者在Hive中通过`ADD JAR`命令加载此驱动,以便在Hive查询中使用`CREATE EXTERNAL TABLE`语句连接MySQL...

    mysql-connector-java-8.0.31-jar包

    本资源提供的"mysql-connector-java-8.0.31-jar包"正是这样一个驱动程序的最新版本,即8.0.31。 MySQL Connector/J 8.0.31版本包含了对MySQL 8.x系列数据库的全面支持,提供了许多新特性和改进。以下是一些关键知识...

    mysql-connector-java-8.0.13.jar

    MySQL Connector/J 8.0.13 是MySQL数据库与Java应用程序之间的重要桥梁,它是一个用于连接Java应用程序到MySQL服务器的JDBC驱动...配合“mysql-connector-java-8.0.13.jar.txt”的使用,可以更好地理解和应用这个驱动。

    mysql驱动包mysql-connector-java-5.1.7-bin.jar

    mysql-connector-java-5.1.7-bin.jar

    mysql-connector-java-8.0.23.jar

    在Java环境中,JDBC(Java Database Connectivity)是连接数据库的标准接口,而mysql-connector-java-8.0.23.jar就是实现了JDBC接口的MySQL驱动,允许Java程序通过JDBC API与MySQL进行通信。 1. **JDBC简介** JDBC...

    mysql-connector-java-5.1.40.tar.gz

    MySQL Connector/J是MySQL数据库与Java应用程序之间的桥梁,它是一个实现了JDBC(Java Database Connectivity)标准的MySQL驱动程序。"mysql-connector-java-5.1.40.tar.gz" 是这个驱动程序的一个特定版本,版本号为...

Global site tag (gtag.js) - Google Analytics