【问题标题】:Google-App-Engine MySQL datebase not connecting [closed]Google-App-Engine MySQL 数据库未连接 [关闭]
【发布时间】:2015-03-20 22:39:52
【问题描述】:

我有一个带有 PHP 和 MySQL 实例数据库的 Google App Engine 网站。我有一个数据库连接文件,我可以将数据库连接到 GAE 开发区的网站,但是当我部署应用程序时,我不知道如何连接它们。我有以下代码,但它不起作用。

<?php
  $host = "unix_socket=/cloudsql/application:instancename";
  $user = "root";
  $password = "password";
  $database = "database";

  $connect = new mysqli($host, $user, $password, $database ); 

  if ($connect->connect_errno) 
  {
    echo "Failed to connect to MySQL: " . $connect->connect_error; 
  }
?>

有什么想法吗?

【问题讨论】:

  • 你看到了什么错误?
  • 我明白了:{"outcome":false,"message":"Unable to connect."}

标签: php mysql sql google-app-engine


【解决方案1】:

让我们按照https://cloud.google.com/appengine/docs/php/cloud-sql/ 的指导进行操作...

我想您已经关注https://cloud.google.com/appengine/docs/php/cloud-sql/#create,包括通过后者的应用程序 ID 确认授予您的 App Engine 应用程序访问该 Cloud SQL 实例的权限(并且它们位于同一地理区域,&c - - 那里和那里的链接都清楚地详细说明了)。

现在,如果您想在 App Engine 应用中使用 msqli,请查看该页面上的示例...:

$sql = new mysqli(null,
  'root', // username
  '',     // password
  <database-name>,
  null,
  '/cloudsql/<your-project-id>:<your-instance-name>'
  );

看到许多不同之处了吗?第一个参数为 null,密码为空字符串,Cloud SQL 引用作为 第六个 参数。

或者,如果您为 Cloud SQL 实例购买了 IP 地址,则同一 URL 的另一个示例是

$sql = new mysqli('127.0.0.1:3306',
  '<username>',
  '<password>',
  <database-name>
  );

但我认为前一种方法是首选(它可以为您节省 IP 地址的适度费用 - 不要让示例误导您,要使用的 IP 地址不会是 127.0 .0.1,但无论您为 Cloud SQL 实例购买了什么:-)。

是的,从本地开发服务器访问 MySQL 与从已部署的 appspot.com 应用程序访问 MySQL 需要不同的组合——但我建议您通读我给出的 URL 中的示例,了解如何转换它对您有利(当您只是在本地开发时在您的开发机器上使用本地 MySQL,并为真正部署的应用程序保留实际的 Cloud SQL 实例——这样,您在本地开发期间可能遇到的错误不会破坏您的真实数据库并造成问题!-)

【讨论】:

  • 感谢您所做的一切。但我已经尝试过你所说的 msqli 方式,但仍然出现同样的问题
猜你喜欢
  • 1970-01-01
  • 2017-10-05
  • 2013-10-24
  • 2019-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-02
  • 2016-07-22
相关资源
最近更新 更多