【问题标题】:PHP (PDO) Connection to Cloud SQL on Google App Engine Not Working与 Google App Engine 上的 Cloud SQL 的 PHP (PDO) 连接不起作用
【发布时间】:2018-11-05 13:50:54
【问题描述】:

我在连接到托管在共享同一项目的应用引擎柔性环境中的 Cloud SQL 实例时遇到问题。我正在使用 PHP 数据对象 (PDO) 创建连接。我不断收到此错误:

SQLSTATE[HY000] [2002] 没有这样的文件或目录

即使我已经完成了有关授权应用等的所有设置。

这是我的示例代码:

public function __construct() {
    try {

        $this->datab = new PDO('mysql:unix_socket=/cloudsql/<MY INSTANCE CONNECTION NAME>;dbname=MY_DATABASE', 'USERNAME', 'PASSWORD');

        $this->datab->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $this->datab->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

    } catch (PDOException $e) {
        $this->isConnected = false;
        throw new Exception($e->getMessage());
    }
}

请问,我需要做什么才能让它工作吗?我现在真的有货,我确实需要帮助。

提前谢谢你。

【问题讨论】:

  • 您能否确认 看起来像这样:PROJECT_NAME:ZONE:INSTANCE_NAME?
  • 是的!就是这样

标签: php google-app-engine pdo google-cloud-sql


【解决方案1】:

试试这个

  in app.yaml
  env_variables:
  MYSQL_USER: username
  MYSQL_PASSWORD: password
  MYSQL_DSN: mysql:unix_socket=/cloudsql/instancename;dbname=yourdbname

  in your script:
  $dsn=getenv('MYSQL_DSN');
  $user=getenv('MYSQL_USER');
  $pass=getenv('MYSQL_PASSWORD');
  $dbh = new PDO($dsn, $user, $pass);

【讨论】:

    猜你喜欢
    • 2020-01-12
    • 2018-07-11
    • 2015-01-12
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 2020-06-07
    • 2017-09-21
    相关资源
    最近更新 更多