Я пытаюсь подключить облачный sql с гибким движком облачных приложений Google.
Мой код следующий:
$dsn = getenv('MYSQL_DSN');
$user = getenv('MYSQL_USER');
$password = getenv('MYSQL_PASSWORD');
try {
$db = new PDO($dsn, $user, $password);
$statement = $db->prepare("SELECT * from user");
$statement->execute();
$users = $statement->fetchAll();
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
app.yaml
runtime: php
env: flex
runtime_config:
document_root: .
env_variables:
MYSQL_DSN: mysql:dbname=DATABASE;unix_socket=/cloudsql/CONNECTION_NAME
MYSQL_USER: username
MYSQL_PASSWORD: password
Получение ошибки ниже
SQLSTATE [HY000] [2002] Нет такого файла или каталога
Если кто-то все еще борется с этой проблемой, не забудьте использовать кавычки вокруг cloud_sql_instances: «CONNECTION_NAME», а также не забудьте использовать кавычки вокруг любых переменных среды в вашем app.yaml.
Кроме того, убедитесь, что у вас включены как Cloud SQL, так и Cloud SQL Admin API (обычно в вашей консоли Google Cloud Console включен только первый из них).
Попробуйте добавить это в app.yaml
# Use the connection name obtained when configuring your Cloud SQL instance.
beta_settings:
cloud_sql_instances: "CONNECTION_NAME"