我可以从本地服务器(使用代理)连接到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书架教程,然后剥离了大部分代码以实现这一点 - 通过在本地服务器上进行测试来验证整体性。
谢谢。
答案 0 :(得分:0)
我认为您应该将以下内容用于dsn:
mysql:unix_socket=/cloudsql/<Project ID>:<Location>:<Instance>;dbname=<Database Name>