Zusammenfassung der Probleme, die bei der Verwendung von JDBC zur Verbindung mit einer MySQL-Datenbank auftreten können

Zusammenfassung der Probleme, die bei der Verwendung von JDBC zur Verbindung mit einer MySQL-Datenbank auftreten können

Klären Sie zunächst einige Konzepte:

  • JDBC: Java-Datenbankverbindung, eine Reihe von Standardschnittstellen, die von Orical angegeben werden
  • Java-Datenbanktreiber: JDBC-Implementierungsklasse, die vom jeweiligen Datenbankanbieter bereitgestellt wird und zum Betrieb verschiedener Datenbanken über den Treiber verwendet werden kann
  • In der Java-Datenbank sind alle Pakete in der JDBC-API java.sql oder javax.sql

JDBC-Betriebsschritte:

(1) Erstellen Sie eine Datenbank und eine Tabelle

(2) Projekt anlegen

(3) Importieren Sie das JAR-Treiberpaket

(4) Registrieren Sie den Treiber

Class.forName("com.mysql.jdbc.Driver");

(5) Eine Verbindung herstellen

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:端口號/項目名", "登錄名", "密碼");

Vorwort

Ich habe vor Kurzem eine MySQL 8.0-Datenbank installiert und bei der Verbindung im Programm traten ständig Probleme auf. Ich bin schon auf einige Probleme gestoßen. Hier ist eine Zusammenfassung der Probleme, die bei der Verwendung von JDBC zur Verbindung mit MySQL auftreten können.

Lassen Sie mich vorher die Umgebung erklären:

  • Entwicklungstool: IDEA
  • MySQL-Version: 8.0.12 für Win64 auf x86_64 (MySQL Community Server – GPL)
  • MySQL-Treiberpaket: 8.0.12

Änderungen der Treiberpaket-URL

Ausnahmeinformationen

Klasse com.mysql.jdbc.Driver wird geladen. Dies ist veraltet. Die neue Treiberklasse ist com.mysql.cj.jdbc.Driver. Der Treiber wird automatisch über die SPI registriert und das manuelle Laden der Treiberklasse ist im Allgemeinen nicht erforderlich.

Grund

Durch die Ausnahme können wir feststellen, dass die neue Treiber-URL com.mysql.cj.jdbc.Driver lautet. Nach der Online-Konsultation haben wir festgestellt, dass das Treiberpaket ab MySQL 6 die neue Treiber-URL verwendet. Wenn Sie die alte Version 5.0 des Treiberpakets verwenden, müssen Sie die Treiber-URL nicht verwenden. Bei Verwendung des alten Treibers können jedoch einige unerwartete Probleme auftreten. Daher wird empfohlen, das Treiberpaket zu aktualisieren und dann den Wert der Treiber-URL zu ändern.

Problemumgehung

Ändern Sie die Treiber-URL von com.mysql.jdbc.Driver in com.mysql.cj.jdbc.Driver.

SSL-Warnung

Warnmeldung

Es wird nicht empfohlen, eine SSL-Verbindung ohne Identitätsüberprüfung des Servers herzustellen. Gemäß den Anforderungen von MySQL 5.5.45+, 5.6.26+ und 5.7.6+ muss eine SSL-Verbindung standardmäßig hergestellt werden, wenn keine explizite Option festgelegt ist. Aus Kompatibilitätsgründen mit vorhandenen Anwendungen, die kein SSL verwenden, wird die Eigenschaft „verifyServerCertificate“ auf „false“ festgelegt. Sie müssen SSL entweder explizit deaktivieren, indem Sie useSSL=false festlegen, oder useSSL=true festlegen und einen Truststore für die Überprüfung des Serverzertifikats bereitstellen.

Grund

Die Warnmeldung wird wie folgt übersetzt.

Das Herstellen einer SSL-Verbindung ohne Serverauthentifizierung wird nicht empfohlen. Ab MySQL 5.5.45+ muss standardmäßig eine SSL-Verbindung hergestellt werden, die von 5.6.26+ und 5.7.6+ benötigt wird, wenn keine explizite Option festgelegt ist. Bei vorhandenen Anwendungen, die kein SSL verwenden, wird die Eigenschaft „VerifyServerCertificate“ auf „false“ gesetzt. Sie müssen SSL explizit deaktivieren, indem Sie „useSSL=false“ festlegen, oder „useSSL=true“ festlegen und einen Truststore zur Überprüfung des Serverzertifikats bereitstellen.

Problemumgehung

Im Allgemeinen müssen Sie bei der Entwicklung keine SSL-Verbindung verwenden. Fügen Sie einfach den Parameter useSSL=false nach der Verbindungszeichenfolge hinzu. Wenn Sie jedoch unbedingt eine SSL-Verbindung benötigen, fügen Sie nach der Treiber-URL den Parameter useSSL=true hinzu.

jdbc:mysql://localhost:3306/dbname?characterEncoding=UTF-8&useSSL=false

Zeitzonenprobleme

Ausnahmeinformationen

java.sql.SQLException: Der Server-Zeitzonenwert „Öйú±ê׼ʱ¼ä“ wird nicht erkannt oder stellt mehr als eine Zeitzone dar. Sie müssen entweder den Server oder den JDBC-Treiber (über die Konfigurationseigenschaft serverTimezone) so konfigurieren, dass ein spezifischerer Zeitzonenwert verwendet wird, wenn Sie die Zeitzonenunterstützung nutzen möchten.

Grund

Außerdem gibt es nach dem Versionsupgrade einen Zeitzonenunterschied zwischen der neuen Versionsdatenbank und dem System, sodass die Zeitzone serverTimezone angegeben werden muss

Problemumgehung

Fügen Sie nach der Verbindungszeichenfolge den Parameter &serverTimezone=GMT%2B8 hinzu. Die endgültige Verbindungszeichenfolge lautet wie folgt:

jdbc:mysql://localhost:3306/dbname?characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8

Ändern Sie die Datenbankzeit. Stellen Sie zunächst über die Befehlszeile eine Verbindung zur Datenbank her und geben Sie die Befehle und deren Ausgaben der Reihe nach wie folgt ein

mysql> Variablen wie "%time_zone" anzeigen;
+------------------+--------+
| Variablenname | Wert |
+------------------+--------+
| Systemzeitzone | |
| Zeitzone | SYSTEM |
+------------------+--------+
2 Zeilen im Satz, 1 Warnung (0,04 Sek.)

mysql> globale Zeitzone festlegen="+8:00";
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

Escapen von & in XML-Konfigurationsdateien

Ausnahmeinformationen

org.mybatis.generator.exception.XMLParserException: XML-Parserfehler in Zeile 16: Der Verweis auf die Entität „useSSL“ muss mit einem Trennzeichen „;“ enden.

Grund

Dies ist der Fehler, den ich beim Verwenden des Mybatis-Generators erhalte. Damals wollte ich den Parameter useSSL nach der Verbindungszeichenfolge hinzufügen, aber da & in XML-Dateien verboten ist, muss es, wenn & benötigt wird, durch das Escape-Symbol & ersetzt werden.

Problemumgehung

Ändern Sie das &-Symbol in der Verbindungszeichenfolge in &

Detaillierte Verbindungszeichenfolgenreferenz

jdbc:mysql://127.0.0.1:3306/dbname?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&serverTimezone=GMT%2B8&verifyServerCertificate=false&autoReconnct=true&autoReconnectForPools=true&allowMultiQueries=true

Wenn Sie XML als Konfigurationsdatei verwenden, müssen Sie natürlich das &-Symbol in der Verbindungszeichenfolge in & ändern.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Java jdbc stellt eine Verbindung zur MySQL-Datenbank her, um Hinzufügungs-, Lösch-, Änderungs- und Abfragevorgänge zu implementieren
  • JDBC stellt eine Verbindung zu MySql-Datenbankschritten her und führt Abfragen, Einfügungen, Löschungen, Aktualisierungen usw. durch.
  • So verbinden Sie JDBC mit MySQL 5.7
  • So verwenden Sie JDBC zum Herstellen einer Verbindung zur MySQL-Datenbank in JSP
  • Java verwendet JDBC, um eine Verbindung zur Datenbank-Toolklasse herzustellen, und JDBC, um eine Verbindung zu MySQL-Datenbeispielen herzustellen
  • Detaillierte Erläuterung der JDBC-Verbindung zur MySQL-Instanz
  • MySQL-JDBC-Verbindungsschritte und allgemeine Parameter
  • Probleme mit der JDBC-Verbindung zu MySQL
  • Java stellt über JDBC eine Verbindung zur Mysql-Datenbank her
  • Sechsstufiger Beispielcode für eine JDBC-Verbindung (Verbindung zu MySQL)

<<:  Führen Sie die folgenden Schritte aus, damit Docker Images abrufen kann

>>:  Vollständige Schritte für dynamische Bindungssymbole in Vue

Artikel empfehlen

Detaillierte Schritte zur Installation des NERDTree-Plugins in Vim unter Ubuntu

NERDTree ist ein Dateisystembrowser für Vim. Mit ...

HTML-Sprachenzyklopädie

123WORDPRESS.COM--HTML超文本标记语言速查手册<!-- --> !D...

Detaillierte Erklärung des Unterschieds zwischen Alt und Titel

Diese beiden Attribute werden häufig verwendet, i...

So versetzen Sie JavaScript in den Ruhezustand oder in den Wartezustand

Inhaltsverzeichnis Überblick Überprüfen von setTi...

Konzepte und Methoden für Server-Stresstests (TPS/Parallelität)

Inhaltsverzeichnis 1 Indikatoren im Stresstest 1,...

Mysql-Indextypen und grundlegende Anwendungsbeispiele

Inhaltsverzeichnis Index - Allgemeiner Index - Ei...

Detaillierte Erklärung der neuen Funktion ROLE in MySQL 8

Welche Probleme löst MySQL ROLE? Wenn Sie ein DBA...

So installieren Sie das ZSH-Terminal in CentOS 7.x

1. Installieren Sie grundlegende Komponenten Führ...

Hinweise zum virtuellen Dateisystem des Linux-Kernel-Gerätetreibers

/******************** * Virtuelles Dateisystem VF...