Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        4年前关闭。
                                                                                            
                
        
我有一个带有PHP的Google App Engine网站和一个MySQL实例数据库。我有一个数据库连接文件,可以将数据库连接到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;
  }
?>


有任何想法吗?

最佳答案

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

我想您已经遵循https://cloud.google.com/appengine/docs/php/cloud-sql/#create了,包括通过App Engine应用程序的应用程序ID确认授予对该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实例-这样,您在本地开发过程中可能遇到的错误不会破坏您的真实数据库并引起问题!-)

10-07 13:28
查看更多