[JAVA] Ich erhalte com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: bei kontinuierlicher Ausgabe von SQL

Beachten Sie, dass ich aufgrund eines Fehlers lange Zeit von MySQL abhängig war.

Symptom

Wenn Sie SQL zweimal hintereinander ausgeben com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure Ein Fehler tritt auf und eine leere Tabelle wird zurückgegeben. Unmittelbar nach dem ersten Problem sprang die Umleitung auf eine andere Seite, und als dort das nächste SQL ausgegeben wurde, trat ein Fehler auf. Wenn Sie jedoch unmittelbar danach die Seite manuell mit dem Browser mit derselben URL aktualisieren, wird die richtige Tabelle angezeigt.

Hintergrund

Ich wurde als Lernaufgabe unterrichtet und habe eine CRUD HP erstellt. Als ich die h2database der In-Memory-Datenbank auf dem in IDE integrierten lokalen Server von STS (Eclipse + Spring Kit) verwendete, Mir wurde gesagt, ich solle die Datenbank in MySQL ändern und im Servermodus ausführen. Aus diesem Grund habe ich mit Vagrant eine CentOS + MySQL-Umgebung mit Bezug auf die Punktinstallation erstellt und erneut verbunden. Dann funktionierte die Datenbank, die vor der Änderung normal funktionierte, an einigen Stellen nicht mehr. Eines davon ist das obige Symptom.

Was als Problem angesehen wird

Obwohl das Schließen () der ersten DB-Verbindung nicht abgeschlossen wurde, habe ich versucht, eine zusätzliche Verbindung herzustellen, und die Anzahl der Connectables überschritten. Andernfalls konnte die SQL-Verarbeitung nicht aufholen und es gab einen Konflikt. Derzeit werden die DB-Verbindung und die SQL-Ausgabe als Satz ausgeführt, sodass noch nicht bekannt ist, an welchem Punkt sie gestoppt wurde.

Wie auch immer Lösung

Vor dem ersten SQL-Problem + sshConnection schließen und das zweite SQL-Problem


		try {
			Thread.sleep(3000);//if here is not this,caused MySQL error.communication link failer.
		}catch(InterruptedException e) {e.printStackTrace();}

Ich habe es reingelegt und es hat vorerst funktioniert.

Was ich aus dem Ergebnis erraten habe

Es gibt einen großen Unterschied in der Antwortgeschwindigkeit zwischen der speicherinternen eingebetteten Datenbank und dem virtuellen Server. Da sich beide auf demselben PC befinden, sollte es keinen Unterschied in der Antwortgeschwindigkeit geben. Wagen Sie es jedoch, die für die Kommunikation erforderliche Zeit zu simulieren, um Probleme zu verursachen, die auf dem Produktionsserver auftreten können?

Ursprünglich handelt es sich nicht um die oben genannte Unterstützung, und es ist möglicherweise keine grundlegende Lösung, es sei denn, Sie ändern die Einstellungen der MySQL-Umgebung, z. B. das Erhöhen der Anzahl der Connectables. Wenn Sie die richtige Lösung kennen, freuen wir uns über Ihre Kommentare.

Recommended Posts

Ich erhalte com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: bei kontinuierlicher Ausgabe von SQL
Führen Sie in Hanami Raw SQL aus, um Ergebnisse zu erhalten, die nicht in der Spalte enthalten sind