关于GAE SQLSTATE的PDO [HY000] [2002]

时间:2018-05-10 07:44:17

标签: php mysql google-app-engine pdo google-cloud-platform

我有一个使用PDO连接MySQL实例的GAE PHP应用程序。 MySQL实例托管在不同的GCP项目中。 我有这个错误:

SQLSTATE[HY000] [2002] Unable to find the socket transport \"unix\" - 
did you forget to enable it when you configured PHP?

这是PDO代码:

# GAE
$this->database = new PDO('mysql:unix_socket=<SQL_INSTANCE_NAME>;dbname=<DB_NAME>', <USER>, <PASSWORD>);
$this->database->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->database->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

是否可以将GAE PHP应用程序连接到其他项目的MySQL实例?

1 个答案:

答案 0 :(得分:2)

固定!!! 我有这个代码

$this->database = new PDO('mysql:unix_socket=<SQL_INSTANCE_NAME>;dbname=<DB_NAME>', <USER>, <PASSWORD>);

并且是::/cloudsql/<PROJECT>:<REGION>:<DB_NAME>

解决方案删除冒号 !!!

所以这是正确的dsn:

$this->database = new PDO('mysql:unix_socket=/cloudsql/<PROJECT>:<REGION>:<DB_NAME>;dbname=<DB_NAME>', <USER>, <PASSWORD>);