无法从App Engine应用程序(灵活环境)PHP连接到MySQL第二代实例

时间:2017-06-12 23:03:55

标签: php mysql google-app-engine pdo

我可以从本地服务器(使用代理)连接到Google Cloud托管的mySQL数据库,但我无法通过Google App Engine进行连接。 App Engine实例和Google Cloud mySQL实例位于同一区域,但我已经读过这应该对第二代MySQL不应该是任何问题。

从本地服务器,我能够连接并发送一个简单的命令来操作数据库。

当我将代码部署到Google App Engine时,它会在以下命令中失败:

$(window).scrollTop();
$(document).height()
$('div').height();

其中:

$ this-dsn定义为:

$pdo = new PDO($this->dsn, $this->user, $this->password);

用户和密码的定义和验证与实例连接名称一样,因为我能够从本地服务器登录并成功操作mySQL数据库。上面的文字<>分隔符是PHP代码中使用的值的描述(替换为混淆敏感信息)。

我试图从这个命令中捕获任何异常,如下所示:

mysql:host=127.0.0.1;port=3306;unix_socket=/cloudsql/<Project ID>:<Location>:<Instance>;dbname=<Database Name>"

可悲的是,我没有在Web客户端上打印任何消息,只是一般的浏览器异常输出。有关如何导航到由Google App Engine实例化的VM以查看syslog或调试服务器(Google Cloud)代码的其他提示的任何提示也将不胜感激。

我的app.yaml看起来像这样:

try {
    $pdo = new PDO($this->dsn, $this->user, $this->password);
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

同样,这一切都可以很好地使用云代理脚本从本地服务器运行,但在部署到Google Cloud时无法播放。我密切关注了php书架教程,然后剥离了大部分代码以实现这一点 - 通过在本地服务器上进行测试来验证整体性。

谢谢。

1 个答案:

答案 0 :(得分:0)

我认为您应该将以下内容用于dsn:

mysql:unix_socket=/cloudsql/<Project ID>:<Location>:<Instance>;dbname=<Database Name>