php - 无法使用 PDO 连接到 Google Cloud SQL

标签 php mysql google-app-engine jdbc pdo

我是 PHP 新手。我正在尝试使用 PHP 和 PDO 连接到 GAE。我尝试使用 mysql_connect() 和 mysql_select_db() 进行连接。我已经成功了。但是,当我尝试使用 PDO 进行连接时,出现错误

Connection failed: SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.

我的代码如下:

define('DBH_SOCKET', '/cloudsql/****:****');
define('DBH_NAME', 'wordpress_db');
define('DBH_USER', 'censored');
define('DBH_PASSWORD', 'censored');

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

try {
    $dbconn = new PDO($pdo_conn, DBH_USER, DBH_PASSWORD);
    $dbconn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch (PDOException $e){
    echo 'Connection failed: ' . $e->getMessage();
}

echo "<br> var is ".$pdo_conn;

/*$conn = mysql_connect(DBH_SOCKET, DBH_USER, DBH_PASSWORD);
if (!$conn)
    die('Connect error ('.mysql_error());

$db_selected = mysql_select_db(DBH_NAME, $conn);
if(!$db_selected)
    die('Cant use db: '.mysql_error());*/

我做错了什么?我在网上看过一些教程,例如 http://webandphp.com/WorkingwithPHPontheGoogleCloudPlatform-166942 .他们使用 PHPStorm 和 JDBC 驱动程序。但是,官方的 google 教程中没有提到使用 JDBC 驱动程序。

最佳答案

在本地使用 PDO 连接时,您需要使用与本地 MySQL 服务器设置相匹配的连接字符串,例如“mysql:host=localhost;dbname={db name};charset=utf8”。

在 GAE 上运行时,您当前的连接字符串应该可以正常工作。事实上,您收到错误消息“无法找到套接字传输“unix”——您是否在配置 PHP 时忘记启用它?”建议您可能错过了“unix_socket=/cloudsql/{project id}:{instance id}”部分。

关于php - 无法使用 PDO 连接到 Google Cloud SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21028598/

相关文章:

php - 自定义订单详细信息页面上的 Woocommerce 自定义字段

php - 使用 PHP 删除行时更新 mySQL 数据库中的 ids

google-app-engine - 在 Google App Engine 中处理 HTTPS 请求

php imagecopyresized vs imagecopyresampled vs imagecopy 优点/缺点

php - php 中的 sql 运行时不返回任何内容

php - 西类牙字符编码不正确

mysql - 包含数据库信息的表

mysql - group_concat 以及该记录中每个单词的频率

python - 从另一个页面引用实体

java - 使用 Objectify 的 DataStore - 加载实体/键而不指定父级