0

我正在关注本教程,但我不想使用 Silex。

我已经设置了 Cloud SQL 第二代实例和本地代理,我可以使用 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 进行本地连接?

4

0 回答 0