我是 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/