无法连接Google App Engine和Google Cloud SQL

时间:2015-09-21 21:42:43

标签: php google-app-engine google-cloud-platform google-cloud-sql

我一直在尝试连接到Google App EngineGoogle Cloud SQL.

运行的示例PHP hello world应用程序

我正在尝试测试示例数据库连接。使用像Navicat这样的外部客户端我可以访问,但是,将应用程序直接连接到云sql是行不通的。

我已经审查了许多stackoverflow类似的问题,并彻底解决了谷歌提供的示例,没有运气。

在这里,您可以看到hello world文件,其中包含三次尝试连接到sql db的输出,我也回显了每个对象的json ....它返回空或null 。

https://beaming-glyph-107521.appspot.com/ enter image description here

我不知道还能做什么

我的Google App可以访问Cloud SQL实例: enter image description here

我现在我的用户sql用户是root,密码是空白的,但我也尝试过一个定义了密码的用户 - 仍然没有运气。

     <?php

     ini_set('display_errors',1);
     ini_set('display_startup_errors',1);
     error_reporting(-1);

       echo 'Hello, world!';

     //Copied and Pasted straight from the provided connection strings in Cloud SQL
     // Using PDO_MySQL (connecting from App Engine)
     $db = new pdo('mysql:unix_socket=/cloudsql/beaming-glyph-107521:testdb',
         'root',  // username
         ''       // password
     );

     // Using mysqli (connecting from App Engine)
     $sql = new mysqli(
         null, // host
         'root', // username
         '',     // password
         '', // database name
         null,
         '/cloudsql/beaming-glyph-107521:testdb'
     );

     // Using MySQL API (connecting from App Engine)
     $conn = mysql_connect(':/cloudsql/beaming-glyph-107521:testdb',
         'root', // username
         ''      // password
     );

     echo "<br><br/>pdo connection: ".json_encode($db);
     echo'<br><br/> msqli connection: '.json_encode($sql);
     echo '<br><br/> mysql conn: '.json_encode($conn);

1 个答案:

答案 0 :(得分:1)

问题在于使用jsonencode()来显示db对象。无论出于何种原因,它显示为空白,实际上它确实存在。经过几个小时的调查后,我能够运行查询并在创建db对象后立即显示结果。

总而言之,看起来我一直都在联系。如果您尝试调试db连接,请尝试运行测试查询并在创建db对象后立即显示结果以测试连接。

    $db = new pdo('mysql:unix_socket=/cloudsql/table-1075:testdb;dbname=sampledb',
'root',  // username
''       // password
  );

 var_dump($db);
 $sql='SELECT * FROM table';
 foreach ($db->query($sql) as $row) {
 print $row['Index'] . "\t";

 }