2014-07-12 97 views
0

因此,我已经在主应用中创建了两个不同的GAE应用项目,我创建了两个Cloud SQL实例。我已经授予对两个SQL实例上的其他应用程序的访问权限。Google App Engine PHP PDO连接失败'MySQL server has gone away'

当我试图从应用程序的简单PDO连接不包含云SQL实例(住在GAE)我收到此错误:SQLSTATE [HY000] [2006] MySQL服务器已消失

这里是PHP连接线按照GAE文档:

$db = new pdo('mysql:unix_socket=/cloudsql/<app-id>:<sql-instance-name>;dbname=<db-name>', 'root', ''); 

通过IP从我的本地GAE SDK实例连接工作正常。

任何建议将是伟大的!

到目前为止,我已经试过:

  1. 增加max_allowed_pa​​cket的大小32000

  2. 增加long_query_time时间60

  3. 增加WAIT_TIMEOUT 60

回答

0

今天发生在我身上,这是m的问题e是应用程序ID,请确保它包含整个Google Apps域。例如如果你的应用程序是testapp,您的实例是instancetest和您的域名是domain.com完整的语句是:

$db = new pdo('mysql:unix_socket=/cloudsql/domain.com:testapp:instancetest;dbname=testdb', 'root', ''); 

希望它能帮助。

3

谷歌应用程序引擎documentation指出:

"Google Cloud Platform project called <your-project-id> is connecting to a Cloud SQL instance named <your-instance-name>."

,因为项目的id您正在使用的项目ID为您的AppEngine应用程式,而不是你的Cloud SQL项目ID你可能会得到一个错误。

尝试:

$db = new pdo('mysql:unix_socket=/cloudsql/<sql-project-id>:<sql-instance-name>;dbname=<db-name>', 'root', ''); 
2

在云端控制台的实例详细信息,下朝屏幕的底部性质,有一个名为实例连接名称场。所以对我来说有效的是:

$db = new pdo('mysql:unix_socket=/cloudsql/<instance-connection-name>;dbname=<db-name>', 'root', ''); 
+0

显然,随着新的第二代MySQL,实例连接名称也需要该区域。属性下的实例连接名称为我做了窍门!这是像“体面片123456:欧洲西部3:sqlinstance” –

相关问题