我在Cloud SQL有一个MySQL数据库。我用App Engine和PHP很好。我可以从本地Apache服务器连接到它,PHP也很好。
当在我的计算引擎示例上尝试相同的脚本时,它不起作用:“SQLSTATE[HY 000] [2002] No such file or directory”
- 我已经在Cloud SQL允许的连接设置中输入了计算引擎IP。
- 我已将SQL用户设置为“xxx@%”
- 计算引擎是Debian 9
- SELinux未运行
下面是我的连接代码:
// MySQL Settings:
$dbuser='xxx';
$dbpassword='yyy';
$dbname='zzz';
$dbconnection = "aaaa:us-central1:aaaa-sql";
$_SESSION['db_source'] = 'mysql:unix_socket=/cloudsql/'.$dbconnection.';dbname='.$dbname;
try {
$db = new PDO($_SESSION['db_source'], $dbuser, $dbpassword);
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$db->setAttribute( PDO::ATTR_EMULATE_PREPARES, TRUE );
} catch (PDOException $e) {
$error_message = $e->getMessage();
include('errors/db_error.php');
exit;
}
字符串
为什么这在App Engine和Locally上有效,但在Compute Engine上无效?是否需要安装或运行某些内容?
1条答案
按热度按时间qij5mzcb1#
你的问题在这里:
字符串
有两种方法可以从Compute Engine上运行的软件连接到Cloud SQL。
第一种方法是在连接字符串中指定Cloud SQL IP address。这也意味着您必须将计算引擎IP地址配置为authorized network。
型
第二种方法是安装和配置Google Cloud SQL Auth Proxy。
型