GOOGLE ADS

Sonntag, 1. Mai 2022

Jdbc-Verbindungsfehler von Google Apps Script

Ich habe eine Google Cloud Project MySQL-Datenbank zur Verwendung in Verbindung mit dem von Google Apps Script bereitgestellten Jdbc-Dienst erstellt. Mit dem Anschluss lief alles wie geplant. Ich verbinde im Grunde wie in den Dokumenten.

var conn = Jdbc.getCloudSqlConnection(dbUrl, user, userPwd);

Ich habe die Datei mit einem anderen Konto geteilt und plötzlich sehe ich einen roten Fehler, der besagt:

'Datenbankverbindung konnte nicht hergestellt werden. Überprüfen Sie die Verbindungszeichenfolge, den Benutzernamen und das Passwort.'

Am Code hat sich nichts geändert, aber es ist ein Fehler aufgetreten. Wenn ich zu meinem ursprünglichen Konto zurückkehre und denselben Code ausführe, gibt es keinen Fehler. Was passiert hier? Irgendwelche Ideen?


Lösung des Problems

Ich denke, das ist ein Berechtigungsproblem in Ihrem zweiten Konto. In Ihrer Frage fehlen notwendige Informationen. Wenn das zweite Konto jedoch als ein anderer Benutzer ausgeführt wird, verfügt es nicht unbedingt über Ihre sqlservice-Autorisierung. Die Erlaubnis,

https://www.googleapis.com/auth/sqlservice

Verwalten Sie die Daten in Ihren Google SQL Service-Instanzen

ist erforderlich, um zu verwenden Jdbc.getCloudSqlConnection(url), während Jdbc#getConnectionUrl()nur die Berechtigung zum Herstellen einer externen Verbindung erforderlich ist

https://www.googleapis.com/auth/script.external_request

Ich glaube, dass Sie nur eine Verbindung zu SQL-Instanzen herstellen können, die Ihnen gehören und für getCloudSqlConnection()die nicht einmal eine externe Verbindungsberechtigung erforderlich ist. Diese Methode ruft wahrscheinlich Ihre SQL-Instanz intern auf.

Verweise:


  • Jdbc#getCloudConnection


  • Jdbc#getConnection



Fazit

Um eine Verbindung zu einem externen Dienst herzustellen, benötigen Sie eine external_requestGenehmigung. Sie benötigen diese Berechtigung jedoch nicht, um eine Verbindung zu Ihren eigenen Dokumenten herzustellen, z SpreadsheetApp.openByUrl(). Ich glaube, mit ist es genauso Jdbc.getCloudSqlConnection(). Es ruft Ihr Google-SQL intern auf. Selbst wenn Sie die Berechtigung für externe Anfragen erteilen, funktioniert es nicht. Was für diese Methode funktioniert, ist

  • Installierbare Trigger (die wie Sie ausgeführt werden).


  • Fügen Sie das zweite Konto auch als Eigentümer in GCP-IAM hinzu (funktioniert jedoch möglicherweise nicht). Siehe diese Antwort

  • Keine Kommentare:

    Kommentar veröffentlichen

    Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

    Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...