Analysieren Sie mehrere gängige Lösungen für MySQL-Ausnahmen

Analysieren Sie mehrere gängige Lösungen für MySQL-Ausnahmen

Vorwort

Der Fehler lautet wie folgt:

JDBC-Verbindung für Transaktion konnte nicht geöffnet werden; verschachtelte Ausnahme ist java.sql.SQLException: Von der zugrunde liegenden Datenbank konnten keine Verbindungen abgerufen werden!

Sehen Sie sich für diesen Fehlertyp einfach die Erklärung an. In einem Satz: Der JDBC-Treiber hat eine Ausnahme ausgelöst und konnte keine Verbindung zur Datenbank herstellen.

1. Der vom Code konfigurierte Datenbankname oder das Kennwort stimmt nicht mit der lokalen Datenbank überein

1.1. Fehlerbeschreibung

Der erste und häufigste Fehler besteht darin, dass der vom Code konfigurierte Datenbankname oder das Kennwort nicht mit der lokalen Datenbank übereinstimmt und eine Ausnahme ausgelöst wird.

Wie in der Abbildung oben gezeigt, ist das Namensattribut vorne in der Konfigurationsdatei das Standardattribut und muss nicht geändert werden. Der Benutzername lautet im Allgemeinen root. Sie können die lokale Konfiguration direkt über die Datenbankverwaltungssoftware anzeigen. Das Datenbankkennwort wird von Ihnen festgelegt.

1.2 Lösung

Ändern Sie den Namen und das Passwort der Konfigurationsdatei.

2. Die importierte nicht lokale Projektdatei stimmt nicht mit der lokalen Datenbankversion überein

2.1. Fehlerbeschreibung

Der zweite häufige Fehler: Die nicht lokal mithilfe der IDE (z. B. Eclipse) importierte Projektdatei stimmt nicht mit der lokalen Datenbankversion überein.

Beispiel: Das JAR-Paket, das Sie in Ihr Eclipse-Projekt importieren, hängt von Version 8.0 ab, aber die MySQL-Datenbank, die Sie lokal installiert haben, hat die Version 5.0. Daher tritt natürlich ein Fehler auf.

2.2 Lösung

Suchen Sie im importierten Projekt nach referenzierten Bibliotheken, klicken Sie mit der rechten Maustaste auf → Build-Pfad → Build-Pfad konfigurieren… Entfernen Sie den 8.0 MySQL-Treiber, von dem das Projekt abhängt, und fügen Sie die 5.0-Version hinzu, die Sie lokal installiert haben.

3. Fehler beim Laden des Treiberpakets in einer höheren Version der MySQL-Konfiguration (am Beispiel von MySQL 8.0)

Dieser Fehler wird durch die Änderung des Treiberpakets nach der Aktualisierung der MySQL-Version verursacht. Die neue Treiberklasse ist com.mysql.cj.jdbc.Driver.

3.1. Fehlerbeschreibung

Der Fehler lautet wie folgt:

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.

Fehlerbeschreibung: Die Treiberklasse „com.mysql.jdbc.Driver“ ist veraltet. Die neue Treiberklasse ist „com.mysql.cj.jdbc.Driver“. Der Treiber wird automatisch über SPI registriert, sodass es normalerweise nicht nötig ist, die Treiberklasse manuell zu laden.

3.2 Lösung

Ändern Sie die von MySQL-Datenbank 5.0 verwendete Treiberklasse com.mysql.jdbc.Driver in com.mysql.cj.jdbc.Driver. Der Treiber wird automatisch über SPI registriert und es ist normalerweise nicht erforderlich, die Treiberklasse manuell zu laden. Die geänderte Konfigurationsdatei ist in der folgenden Abbildung dargestellt:

<!-- Datenbanktreiber laden-->
<Eigenschaftsname="TreiberKlasse" Wert="com.mysql.cj.jdbc.Driver"></Eigenschaft>

3.3. So zeigen Sie Treiberklassen verschiedener MySQL-Versionen an

Wenn wir für die MySQL-Treiberklasse jede Version überprüfen, können wir direkt prüfen, wo sich der Treiber befindet, indem wir auf das JAR-Treiberpaket klicken. Die Version 8.0 lautet beispielsweise com.mysql.cj.jdbc.Driver, wie in der folgenden Abbildung dargestellt:

4. Konfigurationsfehler der Datenbank-Verbindungszeichenfolge mit hoher Version (Zeitzonenproblem)

Hinweis: Sie müssen die Zeitzone nach MySQL Version 6.0 konfigurieren.

4.1. Fehlerbeschreibung

Der Fehler lautet wie folgt:

14.01.2020 00:45:30,876 FEHLER [DruidDataSource.java:616]: Fehler bei Initialisierung der Datenquelle 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.

4.2 Lösung

Wir können die Zeitzonenunterstützung nutzen, indem wir den Server oder JDBC-Treiber (über die Konfigurationseigenschaft „serverTimezone“) so konfigurieren, dass ein spezifischerer Zeitzonenwert verwendet wird.

Die Konfigurationsdateien lauten wie folgt:

<!-- Datenbankverbindungszeichenfolge -->
<Eigenschaftsname="jdbcUrl" Wert="jdbc:mysql://localhost:3306/demo?serverTimezone=GMT%2B8&characterEncoding=utf-8"></Eigenschaft>

5. Warum gibt es einen 8-stündigen Unterschied beim Schreiben der Daten in die Datenbank?

5.1. Fehlerbeschreibung

Die Java-Datenbankverbindung verwendet die UTC-Zeitzone (koordinierte Weltzeit), d. h. serverTimezone=UTC, und die Peking-Zeit ist 8 Stunden vor der UTC-Zeit, d. h. UTC+08:00. Wenn wir direkt serverTimezone=UTC verwenden, sind die in die Datenbank geschriebenen Daten 8 Stunden voraus. Bei Verwendung der folgenden Konfiguration liegt der Abstand zwischen den in die Datenbank geschriebenen Daten bei 8 Stunden:

<!-- Datenbankverbindungszeichenfolge -->
<Eigenschaftsname="jdbcUrl" Wert="jdbc:mysql://localhost:3306/demo?serverTimezone=UTC&characterEncoding=utf-8"></Eigenschaft>

5.2 Lösung

Wir können die Zeitzone des Servers auf Pekinger Zeit GMT%, Shanghaier Zeit Asien/Shanghai oder Hongkonger Zeit Hongkong ändern.

Die Konfigurationsdatei sieht wie folgt aus:

<!-- Datenbankverbindungszeichenfolge -->
<Eigenschaftsname="jdbcUrl" Wert="jdbc:mysql://localhost:3306/demo?serverTimezone=GMT%2B8&characterEncoding=utf-8"></Eigenschaft>

Darüber hinaus kann die my.ini-Konfigurationsdatei in MySQL geändert werden. Dieser Artikel dient nur zur Lösung des entsprechenden Problems und wird daher nicht ausführlich beschrieben.

6. SSL-Verbindungsprobleme

6.1. Fehlerbeschreibung

Der Fehler lautet wie folgt:

So., 14. Okt. 2018, 00:45:30 CST WARNUNG: 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.

Fehlerbeschreibung: Das Herstellen einer SSL-Verbindung ohne Serverauthentifizierung wird nicht empfohlen. Gemäß den SSL-Verbindungsanforderungen von MySQL 5.5.45+, 5.6.26+ und 5.7.6+ muss standardmäßig eine SSL-Verbindung hergestellt werden, wenn der Verbindungsmodus nicht festgelegt ist. Bei vorhandenen Anwendungen, die kein SSL verwenden, wird die Zertifikatsüberprüfungseigenschaft des Servers auf „false“ gesetzt. Sie müssen SSL entweder explizit deaktivieren, indem Sie useSSL=false festlegen, oder useSSL=true festlegen und ein verifiziertes Zertifikat für den Server bereitstellen.

6.2 Lösung

  • Fügen Sie der Datenbank-URL-Verbindungsadresse useSSL = false hinzu, was zum Testen geeignet ist.
  • Fügen Sie der Datenbank-URL-Verbindungsadresse useSSL = true hinzu und geben Sie das Authentifizierungszertifikat des Servers an.

Die Konfigurationsdatei sieht wie folgt aus:

 <!-- Datenbankverbindungszeichenfolge -->
<Eigenschaftsname="jdbcUrl" Wert="jdbc:mysql://localhost:3306/demo?useSSL=false&serverTimezone=GMT%2B8&characterEncoding=utf-8"></Eigenschaft>

Zusammenfassen

Durch die Zusammenfassung mehrerer gängiger Lösungen für MySQL-Ausnahmen können Sie Ihr Verständnis des zugrunde liegenden MySQL vertiefen. Solange Sie sich mit der Entwicklung beschäftigen, passieren ständig Fehler, Sie müssen also gut im Zusammenfassen sein. Gleichzeitig müssen Sie die zugrunde liegenden Prinzipien der Entwicklung vollständig verstehen und als Entwickler über die verschiedenen Versionsiterationen auf dem Laufenden bleiben, da Sie sonst mit der technologischen Entwicklung nie Schritt halten können.

Oben finden Sie eine detaillierte Analyse mehrerer gängiger Lösungen für MySQL-Ausnahmen. Weitere Informationen zu Lösungen für MySQL-Ausnahmen finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • So zeigen Sie MySQL-Links an und löschen abnormale Links
  • Der Grund, warum MySQL die Binlog-Datei manuell registriert und Master-Slave-Anomalien verursacht
  • Zusammenfassung der Ausnahmen bei der MySQL-Datenbankverbindung (sammelwürdig)
  • So beheben Sie den abnormalen Start von mysql5.7.21
  • Erfahrungsaustausch zur Reparatur von MySQL InnoDB-Ausnahmen
  • MySQL-Definition und Details zur Ausnahmebehandlung
  • Einige grundlegende Tutorials zur Ausnahmebehandlung in gespeicherten MySQL-Prozeduren
  • Analysieren eines abnormalen MySQL-Abfragefalls
  • Eine kurze Analyse der MySQL-Ausnahmebehandlung

<<:  Design-Story: Der Wachmann, der sich Nummernschilder nicht merken kann

>>:  So verwenden Sie @media in mobilen adaptiven Stilen

Artikel empfehlen

Wie stellt MySQL die Datenintegrität sicher?

Die Bedeutung von Datenkonsistenz und -integrität...

Beispiel zum Erstellen eines Datenbanknamens mit Sonderzeichen in MySQL

Vorwort In diesem Artikel wird erklärt, wie Sie i...

Was ist COLLATE in MYSQL?

Vorwort Führen Sie den Befehl show create table &...

So fügen Sie einen Link in HTML ein

Jede Webseite hat eine Adresse, die durch eine UR...

HTML ist eigentlich die Anwendung zum Erlernen mehrerer wichtiger Tags

Nachdem der Artikel „Dies wird eine Revolution“ er...

MySQL-Triggersyntax und Anwendungsbeispiele

Dieser Artikel veranschaulicht anhand von Beispie...

Detaillierte Erklärung der Rolle von Klammern in AngularJS

1. Die Rolle der Klammern 1.1 Eckige Klammern [ ]...

Ein Artikel zum Verständnis von Linux-Festplatten und Festplattenpartitionen

Vorwort Alle Hardwaregeräte im Linux-System werde...

onfocus="this.blur()" wird von blinden Webmastern gehasst

Als er über die Seite zur Bedienung der Bildschir...