使用PDO连接到Cloud SQL Proxy

时间:2017-05-23 13:11:58

标签: google-app-engine google-cloud-sql cloud-sql-proxy

我正在关注this tutorial,除了我不想使用Silex。

我已经设置了一个Cloud SQL Second Generation实例和一个本地代理,我可以使用SQL Workbench成功连接到该代理。这是我用来连接的代码:

define('DBH_SOCKET', '/cloudsql/project-***:us-east1:instance-****');
define('DBH_NAME', 'testdb');
define('DBH_USER', 'root');
define('DBH_PASSWORD', '****');

$pdo = "mysql:unix_socket=".DBH_SOCKET.";dbname=".DBH_NAME.";charset=utf8";

try {
    $db = new PDO($pdo, DBH_USER, DBH_PASSWORD);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e){
    echo 'Connection failed: ' . $e->getMessage();
}
echo '<br />';
if($db) echo 'YAY'; else echo 'NAY';

当我将应用程序部署到访问项目时,它的工作非常正常 - ***。appspot.com,但是当我尝试在本地工作时连接失败了。

Connection failed: SQLSTATE[HY000] [2002] No such file or directory.

我知道之前在各种情况下已经提出过这个问题,但他们的解决方案都没有为我工作或者没有直接适用。我已将此添加到我的app.yaml文件中,但结果没有变化:

env_variables:
  # Replace project, instance, database, user and password with the values obtained
  # when configuring your Cloud SQL instance.
  MYSQL_DSN: mysql:unix_socket=/cloudsql/project-****:us-east1:instance-****;dbname=testdb
  MYSQL_USER: root
  MYSQL_PASSWORD: '****'

beta_settings:
  cloud_sql_instances: "project-****:us-east1:instance-****"

当我可以使用SQL客户端在本地连接时,为什么我无法使用PDO在本地连接?

0 个答案:

没有答案