我正在关注本教程,但我不想使用 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 进行本地连接?