Что такое логи, сообщение об ошибке? Как вы развернули это приложение? Можете ли вы показать app.yaml
? Находится ли приложение в одном проекте с экземпляром Cloud SQL? Стандартная или гибкая среда? PHP 5 или 7?
Наиболее распространенные проблемы при подключении App Engine к облачному SQL:
- Учетная запись службы App Engine должна иметь роль администратора Cloud SQL
- В проекте, в котором находится экземпляр Cloud SQL, должны быть активированы Cloud SQL и API администратора SQL
- Соединение между приложением и экземпляром MySQL осуществляется через прокси, который вы настраиваете в своем php-коде и файле yaml.
Вот пример подключения к экземпляру MySQL из PHP72, вы также можете использовать этот код для локального тестирования. Для этого вам необходимо установить и запустить Cloud SQL Proxy Client .
app.yaml
runtime: php72
handlers:
- url: .*
script: auto
env_variables:
MYSQL_USER: [MYSQL_USER]
MYSQL_PASSWORD: [MYSQL_PASSWORD]
MYSQL_DSN: 'mysql:dbname=[MYSQL_DB_NAME];unix_socket=/cloudsql/[MYSQL_INSTANCE_CONNECTION_NAME]'
beta_settings:
cloud_sql_instances: [MYSQL_INSTANCE_CONNECTION_NAME]
index.php
<?php
$user = getenv('MYSQL_USER');
$password = getenv('MYSQL_PASSWORD');
$dsn = getenv("MYSQL_DSN") ?: "mysql:host=127.0.0.1;port=3306;dbname=[MYSQL_DB_NAME]";
$db = new PDO($dsn, $user, $password);
try {
$db = new PDO($dsn, $user, $password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
$statement = $db->prepare("SELECT * from [MYSQL_TABLE_NAME]");
$statement->execute();
$all = $statement->fetchAll();
foreach ($all as $data) {
echo $data["id"];
}
?>