2015-09-21 3 views
0

Я пытался подключиться к образцу PHP привет мир приложение работает в Google App Engine для Google Cloud SQL.Невозможно подключиться Google App Engine и Google Cloud SQL

Im пытается проверить соединение с базой данных образца. Использование внешнего клиента, например, Navicat Я могу получить доступ, однако подключение приложения непосредственно к облако sql не работает.

Я рассмотрел множество похожих проблем stackoverflow и тщательно обработал примеры, предоставленные Google, без везения.

Здесь вы можете увидеть мировой файл hello с результатами трех разных попыток подключения к sql db, я повторяю json каждого объекта ..., который возвращается пустым или нулевым.

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

Я не уверен, что еще здесь делать

Мой Google App имеет доступ к экземпляру Cloud SQL: enter image description here

Я сейчас мой пользователь пользователь SQL является корнем и пароль пуст, но Ive также попробовал пользователя с определенным паролем - все равно не повезло.

 <?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); 
+0

Мне кажется, что вам нужно настроить токен доступа в консоли разработчиков. См. Здесь инструкции: https://developers.google.com/identity/protocols/OAuth2ServiceAccount –

+0

Спасибо за ответ Джошуа, что вы можете быть верны, но упоминания о токене доступа нигде нет. Вот ссылка на официальную документацию по подключению GAE и GCSQL, перечислены пошаговые инструкции, но не упоминается токен доступа https://goo.gl/BExXCz. Кроме того, я думаю, что когда вы авторизуете приложение, это авторизация происходит с любой авторизацией, обычно предоставляемой токеном доступа. –

+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"; 

} 
Смежные вопросы