2016-06-18 4 views
1

Ich bekomme einen Fehler ähnlich wie andere Beiträge in diesem Thema. Ich habe versucht, von 1. Gen zu SQL Server der 2. Generation (beide auf uns-central1), aber es funktioniert immer noch nicht.Google App Engine und Cloud SQL: Verlorene Verbindung zu MySQL-Server bei "Lesen der ersten Kommunikationspaket" SQL 2. Gen

Ich habe mein CLOUDSQL_PROJECT von der URL oben auf meinem Projekt kopiert.
Ich habe meine CLOUDSQL_INSTANCE aus dem Proprities-Teil auf der SQL-Seite kopiert.

In meinem main.py, ich versuche, Google Beispielcode auszuführen, und es funktioniert nicht (lokal ja, natürlich):

if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'): 
     db = MySQLdb.connect(
      unix_socket='/cloudsql/{}:{}'.format(
       CLOUDSQL_PROJECT, 
       CLOUDSQL_INSTANCE), 
      user=user,passwd=password) 
    # When running locally, you can either connect to a local running 
    # MySQL instance, or connect to your Cloud SQL instance over TCP. 
    else: 
     db = MySQLdb.connect(host=host,user=user,passwd=password) 
cursor = db.cursor() 
cursor.execute('SHOW VARIABLES') 

for r in cursor.fetchall(): 
    self.response.write('{}\n'.format(r)) 
+0

Sie können nur einmal auf die Antwort schreiben, abgesehen von allem anderen. –

+2

Fixed irgendwie! Ich habe versucht, die CLOUDSQL_INSTANCE zu manipulieren und es hat funktioniert. Ich habe gerade den Projekt-ID-Teil von ihm entfernt und es funktionierte so zum Beispiel, wenn die Projekt-ID ist Hallo-Wort-123 und der Name INSTANCE (von der Seite SQL-Eigenschaften) ist Hallo-Welt-123: us- central1: sqlsomething3 Dann müssen Sie es in us-central1 ändern: sqlsomething3 – Yarh

Antwort

2

Die Dokumentation etwas veraltet ist. Sie sollten immer die Eigenschaft "Instanzverbindungsname" auf der Seite mit den SQL-Eigenschaften verwenden können, um den Unix-Socket-Pfad zu erstellen. Fügen Sie diesen Wert einfach nach dem Präfix "/ cloudsql /" an.

Für die zweite Generation ist das Verbindungsformat Projekt: Region: Name. In Ihrem Beispiel wird "hallo-world-123: us-central1: sqlsomething3" zugeordnet, und der Unix-Socket-Pfad lautet "/ cloudsql/hallo-world-123: us-central1: sqlsomething3".

+0

Um Tonys Antwort hinzuzufügen, steht die relevante Dokumentation zur App Engine-Konnektivität unter der Überschrift [Verbinden mit Google App Engine] (https://cloud.google.com/) sql/docs/app-engine-connect # gaev2-csqlv2). – Nicholas

+0

Große Antwort. Musste danach suchen. – ADL

Verwandte Themen