Сбой сервера Cloud SQL / MySQL после развертывания в Google Cloud

#google-app-engine #google-cloud-platform

#google-app-engine #google-cloud-platform

Вопрос:

У меня есть приложение Google App Engine, которое отлично работает при локальном запуске с помощью localhost:8080 , но после развертывания в облаке с помощью gcloud app deploy я получаю следующую ошибку:

 Warning: PDO::__construct(): MySQL server has gone away in /base/data/home/apps/s~fileabcd/20190320t221240.123456737151234567/gac_abcd.php on line 7

Warning: PDO::__construct(): Error while reading greeting packet. PID=-1 in /base/data/home/apps/s~fileabcd/20190320t221240.123456737151234567/gac_abcd.php on line 7
  

Есть идеи, почему это происходит?

Ответ №1:

Я обнаружил причину, по которой мое приложение Google App Engine (GAE) функционировало должным образом на localhost, но выдало MySQL server has gone away ошибку после развертывания в [PROJECT-ID].appspot.com .

Причина в том, что мое приложение подключалось к экземпляру Cloud SQL в другом проекте, и для этого вы должны предоставить учетную запись службы appengine по умолчанию ([PROJECT-ID]@appspot.gserviceaccount.com ) одна из следующих ролей IAM:

  • Облачный SQL-клиент
  • Облачный редактор SQL
  • Администратор облачного SQL

После того, как я добавил учетную запись службы App Engine по умолчанию в качестве Cloud SQL Client роли в проекте, содержащем экземпляр Cloud SQL, все работало отлично.

Из документации Cloud SQL.

Комментарии:

1. мой sql и app engine находятся в одном проекте, хотя я по-прежнему получаю «запрещенное» сообщение, предлагающее мне добавить SQL client / admin в основной IAM, и я это сделал, и до сих пор получаю ошибки