无法使用 Google App Engine 上的 Slim 框架连接到 Google Cloud SQL

Not able to connect to Google Cloud SQL with Slim framework on Google App Engine

我正在使用 Slim 框架为我的应用程序构建 api。我无法连接到 Google 云 SQL。

我在下面提供了错误信息。

我一直在 codeigniter 中使用它,没有任何问题。有人可以帮助我了解如何解决此问题。

数据库代码:

function getDB() {

$dbhost=":/cloudsql/projid:instancename";
$dbuser="root";
$dbpass="";
$dbname="dbname";

$dbConnection = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); 
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $dbConnection;
}

错误信息

{"error":{"text":SQLSTATE[HY000] [2002] php_network_getaddresses: gethostbyname failed. errno=0}}

P.S。我在 Localhost 上没有遇到这个问题。

您的 PDO 连接字符串应该使用 mysql:unix_socket 而不是 mysql:host

https://cloud.google.com/appengine/docs/php/cloud-sql/

PDO_MySQL

$db = new pdo('mysql:unix_socket=/cloudsql/<your-project-id>:<your-instance-name>;dbname=<database-name>',
  'root',  // username
  ''       // password
  );

这就是我更改代码的方式

来自

function getDB() {

$dbhost=":/cloudsql/projid:instancename";
$dbuser="root"; 
$dbpass="";
$dbname="dbname";

$dbConnection = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); 
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $dbConnection;
}

function getDB() {

    $dbConnection = new pdo('mysql:unix_socket=/cloudsql/<your-project-id>:<your-instance-name>;dbname=<database-name>',
  'root',  // username
  ''       // password
  );
    $dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    return $dbConnection;
    }