【问题标题】:Unable to connect to mysql database with google app engine无法使用谷歌应用引擎连接到 mysql 数据库
【发布时间】:2015-03-01 16:28:51
【问题描述】:

我有一个正在运行的 Google App Engine 应用程序,数据库已设置并且应该可以工作(与开发服务器一起使用),但在部署应用程序时无法连接到数据库。我收到以下错误:

Warning: PDO::__construct(): MySQL server has gone away in /base/data/home/apps/s~helloworldtmb/1.382580389844400668/guestbook.php on line 26 

Warning: PDO::__construct(): Error while reading greeting packet. PID=-1 in /base/data/home/apps/s~helloworldtmb/1.382580389844400668/guestbook.php on line 26 {"outcome":false,"message":"Unable to connect."}

第 26 行是

 $db = new pdo('mysql:unix_socket=/cloudsql/<helloworldtmb>:<helloworldtmb:helloo>;dbname=guestbook', 'root', 'p');

helloworldtmb 是应用程序 ID,helloworldtmb:helloo 是实例名称。有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    从项目 ID 和 Cloud SQL 实例名称中删除尖括号

    【讨论】:

    • 哦,谢谢你没有意识到。该行现在是: $db = new pdo('mysql:unix_socket=/cloudsql/helloworldtmb:helloworldtmb:helloo;dbname=guestbook', 'root', 'p');但我仍然收到相同的错误消息
    • 没有想法了...您是否授予应用 (helloworldtmb) 访问 Cloud SQL 实例的权限?如Build a starter application and database 部分的第 2 步所述。
    【解决方案2】:

    docs you followed 填写模板时,您没有删除&lt;angle brackets&gt;。通常,在编程时,当您看到带有诸如“您的应用程序 ID”或“您的数据库名称”之类的字的尖括号时,您会希望将尖括号解释为定义字符串的开始和结束位置。所以,

    /home/<your username>/.ssh/
    

    会变成

    /home/anon/.ssh/
    

    还有

    curl -X <request method> <url>
    

    会变成

    curl -X GET http://v1-dot-api.domain.com/threads/list
    

    【讨论】:

    • 哦,谢谢你没有意识到。该行现在是: $db = new pdo('mysql:unix_socket=/cloudsql/helloworldtmb:helloworldtmb:helloo;dbname=guestbook', 'root', 'p');但我仍然收到相同的错误消息
    • 在此评论的 dbname 中出现了一些奇特的字符,例如在 guestbook 之间的一个空方块(与您对 Layo 答案的评论相同)。你原来的 Q 中没有这样的特殊角色。不知道这是否与它有关......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    相关资源
    最近更新 更多