Verbindung über Nacht verloren (Spring Boot + MySQL)

8

Meine Spring-Boot-Anwendung zeigt mir immer diesen Whitelabel-Fehler am Morgen: JPA EntityManager konnte für die Transaktion nicht geöffnet werden; verschachtelte Ausnahme ist javax.persistence.PersistenceException: org.hibernate.TransactionException: JDBC begin transaction failed:

Ich habe das Web durchsucht. Ich denke, es könnte sein, dass mysql die Verbindung für 8 Stunden inaktiv schließt. Gemäß dem Dokument wird der Spring Boot jedoch automatisch eine Pooling-Apache-Datenquelle konfigurieren. Ссылка

Ich bin mir nicht sicher, wie ich den Anwendungscode oder die Datenbank konfigurieren soll.

Hier ist die Build.gradle, die ich verwende:

%Vor%

Hier sind die Datenbankkonfigurationen in application.properties:

%Vor%

Für die Datenquelle verwende ich das Repository von spring data:

%Vor%

Hier ist das Ergebnis gegen die mysql-Datenbank, auf der "zeige Variablen wie '% timeout%':

läuft %Vor%     
darklord 04.07.2015, 14:42
quelle

3 Antworten

13

Überprüfen Sie diese Antwort: Spring Boot JPA - Konfigurieren der automatischen Wiederverbindung

Kurz gesagt, Sie brauchen:

%Vor%     
Lukas Hinsch 04.07.2015, 19:32
quelle
4

Sie können auch diesen Link sehen Es fordert Sie auf, die folgenden Zeilen in die Datei application.properties aufzunehmen.

%Vor%     
Soumya 11.01.2016 14:42
quelle
0

Sie können das beheben, indem Sie im DB Server die Eigenschaft wait_timeout = 31536000 setzen. Dies entspricht einem Jahr. Wenn Ihre Datenbank in der AWS-Umgebung ausgeführt wird, gehen Sie zu Parameters group- & gt; Erstelle eine neue Gruppe - & gt; Legen Sie wait_timeout = 31536000 fest und weisen Sie die neu erstellte Parametergruppe Ihrer RDS-Instanz zu. Wenn Sie dies in der Spring-Boot-Instanz beheben wollen, können Sie nur mit C3P0-Einstellungen beheben, aber ich habe das nicht versucht.

    
Azeez Althaf 28.07.2016 17:07
quelle