App Engine Java Servlet stellt keine Verbindung zu Cloud SQL her
Ich habe ein Java-Webservlet mit der App-Engine erstellt, das Anfragen an eine Datenbank stellt. Ich habe das Servlet lokal mit einer lokalen Datenbank getestet und es hat einwandfrei funktioniert. Dann habe ich das Servlet lokal getestet, aber ich habe vorher auf die Cloud SQL-Datenbank zugegriffen. Dies hat auch einwandfrei funktioniert.
Mein Problem tritt auf, nachdem ich das Servlet bereitgestellt habe. Nach der Bereitstellung geben alle Datenbankanforderungen Folgendes zurück:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not
received any packets from the server.
Ich habe in der Cloud-Konsole nachgesehen und meine App wurde den Cloud-Anwendungen von SQL Authorized App Engine auf der Registerkarte Zugriffssteuerung ordnungsgemäß hinzugefügt.
Hat jemand ähnliche Probleme mit bereitgestellten App Engine-Servlets gehabt? Irgendwelche Lösungen oder Ratschläge da draußen? Ich würde mich über jede Hilfe freuen !!!
AKTUALISIEREN:
Der obige Fehler wurde mit dem folgenden Code generiert, um auf die Datenbank zuzugreifen
Class.forName("com.mysql.jdbc.Driver");
Url = "jdbc:mysql://<ip-address-cloudsql>:3306/<dbname>";
Connection con = DriverManager.getConnection (Url,"root",<password>);
Mit diesem Code wurde derselbe Fehler erzielt. Beachten Sie, dass er dem in diesem Beispiel gezeigten Code sehr ähnlich isthttps://developers.google.com/appengine/docs/java/cloud-sql/
Class.forName("com.mysql.jdbc.GoogleDriver");
Url = "jdbc:google:mysql://<appID:instanceID>/<dbname>?
user=root&password=<password>";
Connection con = DriverManager.getConnection (Url);
Ich habe die Formatierungstipps in diesem Stackoverflow-Beitrag befolgt, als es darum ging, die URL mithilfe von appid und Instanz-ID festzulegen:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
Die Verwendung dieses Codes führte zu folgendem unterschiedlichen Fehler:
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
Ich gehe davon aus, dass dort localhost steht, da meine CloudsQL-Datenbank so eingestellt ist, dass sie dem App Engine-Servlet folgt. Beachten Sie auch, dass beide Methoden beim lokalen Ausführen des Servlets und beim Zugriff auf die Cloud-SQL-Datenbank einwandfrei funktionierten.
irgendwelche Gedanken? Ich weiß nicht, was ich sonst noch versuchen soll: [