无法使用 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;
}
我正在使用 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;
}