MySQL Blog Archive
For the latest blogs go to
MySQL Connector/J 5.1.47 GA has been released

Dear MySQL Users,

MySQL Connector/J 5.1.47, a maintenance release of the production 5.1
branch has been released. Connector/J is the Type-IV pure-Java JDBC
driver for MySQL.

MySQL Connector/J is available in source and binary form from the
Connector/J download pages at
and mirror sites as well as Maven-2 repositories.

MySQL Connector/J (Commercial) is already available for download on
the My Oracle Support (MOS) website. This release will shortly be
available on eDelivery (OSDC).

As always, we recommend that you check the “CHANGES” file in the
download archive to be aware of changes in behavior that might affect
your application.

MySQL Connector/J 5.1.47 includes the following general bug fixes and
improvements, also available in more detail on

Changes in MySQL Connector/J 5.1.47 (2018-08-17, General Availability)

Version 5.1.47 is a maintenance release of the production 5.1 branch.
It is suitable for use with MySQL Server versions 5.5, 5.6, 5.7, and
8.0. It supports the Java Database Connectivity (JDBC) 4.2 API.

     * Functionality Added or Changed

     * Bugs Fixed

Functionality Added or Changed

     * The value UTF-8 for the connection property
       characterEncoding now maps to the utf8mb4 character set
       on the server and, for MySQL Server 5.5.2 and later,
       characterEncoding=UTF-8 can now be used to set the
       connection character set to utf8mb4 even if
       character_set_server has been set to something else on
       the server. (Before this change, the server must have
       character_set_server=utf8mb4 for Connector/J to use that
       character set.)
       Also, if the connection property connectionCollation is
       also set and is incompatible with the value of
       characterEncoding, characterEncoding will be overridden
       with the encoding corresponding to connectionCollation.
       See Using Character Sets and Unicode
       ( j/5.1/en/connector-j-reference-charsets.html )
       for details, including how to use the utf8mb3 character
       set now for connection. (Bug#23227334, Bug #81196)

Bugs Fixed

     * Setting rewriteBatchedStatements=true and
       useLocalTransactionState=true caused transactions to be
       uncommitted for batched UPDATE and DELETE statements. It
       was due to the intermediate queries for enabling
       multiquery support on the server resetting the local
       transaction state as a side effect. With this fix, the
       local transaction state is preserved when the
       intermediate queries are executed. (Bug #27658489, Bug

     * Rewriting prepared INSERT statements in a multiquery
       batch failed with a BatchUpdateException when the
       statements did not contain place holders. This was due a
       faulty mechanism for query rewriting, which has been
       corrected by this fix. (Bug #25501750, Bug #84813)

     * When using batched prepared statements with multiple
       queries per statement, queries rewriting was incorrect,
       resulting in the wrong queries being sent to the server.
       (Bug #23098159, Bug #81063)

     * ResultSet.updateRow() failed when the character set used
       by a column in the ResultSet did not match that of the
       connection's encoding. With this fix, values for the
       affected columns are first converted to String before the
       update, so that the character set difference is properly
       handled. (Bug #22847443, Bug #80532)

     * Record updates failed for a scrollable and updatable
       PreparedStatement when the WHERE clause for the updater
       or refresher contained fractional timestamp values and
       the connection property sendFractionalSeconds was set to
       false. It was because in the situation, Connector/J did
       not perform the proper adjustments of the fractional
       parts in the WHERE clause values according to the length
       of the field's fractional part as defined in the
       database. This fix makes Connector/J perform the proper
       adjustment to the fractional part, so that the WHERE
       clause value can be properly compared to the value
       fetched from the database.
       Moreover, useJDBCCompliantTimezoneShift(),
       useGmtMillisForDatetimes(), and
       useSSPSCompatibleTimezoneShift() were applied to the
       WHERE clause values while they should not be, and this
       fix removes their applications. (Bug #22305979)

     * When a Java Date value was bound to a PreparedStatement
       parameter, attempts to format the value by a proleptic
       GregorianCalendar failed to make the dates proleptic, so
       that dates before the Julian-Gregorian cutover (October
       15, 1582) were stored wrongly. With this fix, a proleptic
       calendar is properly used if supplied to the setDate()
       Note that when trying to set or retrieve dates before the
       Julian-Gregorian cutover with PreparedSatement methods, a
       proleptic GregorianCalendar should always be explicitly
       supplied to the setDate() and getDate() method.For
       details, see Known Issues and Limitations
       ( ).
       (Bug#18749544, Bug #72609)          

On Behalf of MySQL Release Engineering Team,
Surabhi Bhat