Wenn in letzter Zeit ein solches Problem auftritt, wird es unter com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1905) gemeldet.
unter com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2351)
unter com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2862)
unter com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
unter com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
unter com.mysql.jdbc.Connection.execSQL(Connection.java:2988)
unter com.mysql.jdbc.Connection.execSQL(Connection.java:2917)
unter com.mysql.jdbc.Statement.executeQuery(Statement.java:824)
unter com.zycy.db.DbTrans.executeQuery(DbTrans.java:127)
Ein solcher Fehler wird nach dem Neustart des Tomcat-Dienstes behoben, dieses Problem tritt jedoch über Nacht auf.
Das MySQL-JDBC-URL-Format lautet wie folgt:
jdbc:mysql://[host:port],[host:port].../[database][?Parametername 1][=Parameterwert 1][&Parametername 2][=Parameterwert 2].
Einige häufig verwendete, wichtigere Parameter:
Parametername Parameterbeschreibung Standardwert Mindestversionsanforderung
Benutzerdatenbank-Benutzername (wird zum Herstellen einer Verbindung zur Datenbank verwendet) alle Versionen
Passwort Benutzerpasswort (wird zum Herstellen einer Verbindung zur Datenbank verwendet) Alle Versionen
useUnicode Gibt an, ob der Unicode-Zeichensatz verwendet werden soll. Wenn der Parameter CharacterEncoding auf gb2312 oder gbk eingestellt ist, muss dieser Parameterwert auf true false 1.1g gesetzt werden
CharacterEncoding Wenn useUnicode auf „true“ gesetzt ist, wird die Zeichenkodierung angegeben. Es kann beispielsweise auf gb2312 oder gbk false 1.1g eingestellt werden
autoReconnect Wird die Datenbankverbindung automatisch wiederhergestellt, wenn sie ungewöhnlich unterbrochen wird? falsch 1.1
autoReconnectForPools Ob die Wiederverbindungsstrategie für den Datenbankverbindungspool verwendet werden soll false 3.1.3
failOverReadOnly Ist die Verbindung nach erfolgreicher automatischer Wiederverbindung auf schreibgeschützt gesetzt? wahr 3.0.12
Wenn maxReconnects autoReconnect auf true gesetzt ist, beträgt die Anzahl der Verbindungswiederholungen 3 1.1
initialTimeout Wenn autoReconnect auf true gesetzt ist, das Zeitintervall zwischen zwei erneuten Verbindungen, Einheit: Sekunden 2 1.1
connectTimeout Der Timeout beim Herstellen einer Socket-Verbindung mit dem Datenbankserver, Einheit: Millisekunden. 0 bedeutet nie Timeout, gilt für JDK 1.4 und höher 0 3.0.1
socketTimeout Socket-Vorgang (Lesen und Schreiben) Timeout, Einheit: Millisekunden. 0 bedeutet nie Timeout 0 3.0.1
Entsprechend der chinesischen Umgebung kann die MySQL-Verbindungs-URL normalerweise auf Folgendes festgelegt werden:
jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false
Bei Verwendung eines Datenbankverbindungspools ist es am besten, die folgenden zwei Parameter festzulegen:
autoReconnect=true&failOverReadOnly=false
Es ist zu beachten, dass in der XML-Konfigurationsdatei das &-Symbol in der URL in & maskiert werden muss. Wenn Sie beispielsweise den Datenbankverbindungspool in server.xml von Tomcat konfigurieren, lautet das MySQL-JDBC-URL-Beispiel wie folgt:
jdbc:mysql://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=utf8&autoReconnect