com.mysql.jdbc.Driver と com.mysql.cj.jdbc.Driver の違い

        mysql に接続してプロジェクトを開始すると、com.mysql.jdbc.Driver の代わりに com.mysql.cj.jdbc.Driver を使用することが推奨されるという警告が表示されます。

        5 以降のバージョンを選択するとcom.mysql.jdbc.Driver、警告プロンプトが表示されます。これを次のように置き換えます。com.mysql.cj.jdbc.Drive

ソース コードを見ると、次のように、古いバージョンがDriver新しいバージョンを継承し、継承を通じて古いバージョンと互換性があり、アラーム プロンプトが追加されている        ことがわかります。Driver

public class Driver extends com.mysql.cj.jdbc.Driver {
    public Driver() throws SQLException {
    }

    static {
        System.err.println("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.");
    }
}

        それでは、この 2 つの違いは何でしょうか?

本質的な違い:

  • com.mysql.jdbc.Driver は mysql-connector-java 5 にあります。 
  • com.mysql.cj.jdbc.Driver は mysql-connector-java 6 以降です

com.mysql.jdbc.Driver を使用する場合、構成は次のようにする必要があります。

driver-class-name=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false
username=root
password=

com.mysql.cj.jdbc.Driver を使用する場合は、次の構成が必要です。

driver-class-name=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&?useUnicode=true&characterEncoding=utf8&useSSL=false
username=root
password=

知らせ:

        タイムゾーン (serverTimezone=UTC) を指定し、SSL を使用する (useSSL=false) 必要があります。

次の点にも注意してください。

        タイムゾーンを設定する場合、serverTimezone=UTC と設定すると、中国時間より 8 時間早くなります。中国にいる場合は、アジア/上海またはアジア/香港を選択し、次のように設定できます。

driver-class-name=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?serverTimezone=Shanghai&?useUnicode=true&characterEncoding=utf8&useSSL=false
username=root
password=

状況分析:

mysql ドライバーの maven バージョン 6 以降を使用している場合:

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>

これは Mysql ドライバーの 8.0.16 バージョンを使用しているため、次のエラーが報告されます。

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.Driver'。 这已被弃用。 新的
驱动程序类是'com.mysql.cj.jdbc.Driver'。
驱动程序通过SPI自动注册
并且通常不需要手动加载驱动程序类。
这时候你就要把com.mysql.jdbc.Driver 改为 com.mysql.cj.jdbc.Driver

ただし、変更を加えた後も、引き続きエラーが発生します。

WARN: Establishing SSL connection without server’s identity verification is not recommended. 
According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection 
must be established by default if explicit option isn’t set. 
For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false’. 
You need either to explicitly disable SSL by setting useSSL=false, 
or set useSSL=true and provide truststore for server certificate verification.


上記で報告されたエラーの翻訳:

警告:建议不要在没有服务器身份验证的情况下建立SSL连接。
根据MySQL 5.5.45 +,5.6.26+和5.7.6+要求SSL连接
如果未设置显式选项,则必须默认建立。
为了符合不使用SSL的现有应用程序,verifyServerCertificate属性设置为“false”。
您需要通过设置useSSL = false显式禁用SSL,
或者设置useSSL = true并为服务器证书验证提供信任库。


現時点で SSL 検証が必要ない場合は、URL の後に useSSL=false を追加します。

現時点では、警告は発行されません。

mysql 8.0.16 バージョンのドライバーを使用する場合の次のエラーを解決します。

java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone.


        これは、データベースとシステムのタイム ゾーンの違いが原因で発生します。この問題は、jdbc 接続の URL の後に serverTimezone=GMT を追加することで解決できます。gmt+8 タイム ゾーンを使用する必要がある場合は、それを記述する必要がありますそれ以外の場合は空として解析されます。

        もう 1 つの解決策は、MySQL jdbc ドライバーの下位バージョンを使用することです。5.1.28 ではタイム ゾーンの問題は発生しません。

から転載

com.mysql.jdbc.Driver と com.mysql.cj.jdbc.Driver_DayFight_DayUp のブログ - CSDN ブログの違い

おすすめ

転載: blog.csdn.net/yangyangye/article/details/131960028