web-dev-qa-db-ja.com

SQLSTATE [HY000] [2002]そのようなファイルやディレクトリはありません、Google Cloud AppEngineは柔軟です

クラウドSQLをグーグルクラウドアプリエンジンフレキシブルに接続しようとしています。

私のコードは次のとおりです。

$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]そのようなファイルまたはディレクトリはありません

1
parth

それでも問題が解決しない場合は、cloud_sql_instances: "CONNECTION_NAME"を引用符で囲むことを忘れないでください。また、app.yamlの環境変数を引用符で囲むことも忘れないでください。

さらに、CloudSQLとCloudSQL Admin APIの両方が有効になっていることを確認してください(通常、Google Cloud Consoleでは最初のAPIのみが有効になっています)。

1
Ivan Petrov

これをapp.yamlに追加してみてください

# Use the connection name obtained when configuring your Cloud SQL instance.
beta_settings:
    cloud_sql_instances: "CONNECTION_NAME"
0
ArmeniaH