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 Analyse der HTML-Semantik und der zugehörigen Front-End-Frameworks

Über Semantik Die Semantik ist die Lehre von der ...

So geben Sie chinesische Zeichen im Linux-Kernel aus

Sie können problemlos Chinesisch eingeben und im ...

Detailliertes Tutorial zur Installation von VirtualBox 6.0 auf CentOS 8 / RHEL 8

VirtualBox ist ein kostenloses Open Source-Virtua...

Erfahren Sie, wie Sie eine MySQL-Datenbank auf dem Mac installieren

Laden Sie MySQL für Mac herunter: https://downloa...

Fassen Sie die häufig verwendeten n-ten-Kind-Selektoren zusammen

Vorwort In der Front-End-Programmierung verwenden...

Richtige Verwendung der Vue-Funktion Anti-Shake und Throttling

Vorwort 1. Entprellen: Nach dem Auslösen eines Ho...

JavaScript-Canvas zum Erzielen eines Spiegelbildeffekts

In diesem Artikel wird der spezifische Code für J...

Detaillierte Anweisungen zur Installation von MySQL8.0.19 im CentOS7.5-Tutorial

1. Einleitung Dieser Artikel enthält keine Screen...

Das schnellste Textsuchtool von Linux: ripgrep (die beste Alternative zu grep)

Vorwort Apropos Textsuchtools: Jeder sollte grep ...

Lösen Sie das Problem, dass Docker Pull zurückgesetzt wird

In diesem Artikel wird beschrieben, wie Sie das P...