连接到谷歌cloudsql

时间:2014-04-04 13:17:43

标签: php google-app-engine google-cloud-sql

即时尝试从appengine连接到google cloudsql,但即时通讯面临此错误:

No connection could be made because the target machine actively refused it

我的php文件,我已经上传到appengine:

$sql = new mysqli(null,
'myuser', // username
'mypass'
'mydb',
null,
'/cloudsql/**:**'
);
if ($mysqli->connect_error) {
echo 'no';
die('Connect Error (' . $mysqli->connect_errno . ') '
        . $mysqli->connect_error);
}
else {
echo 'yes\n';
}

允许来自云sql的appengine。 我该怎么办 ?

2 个答案:

答案 0 :(得分:2)

我一直在尝试复制您收到的错误,但在使用您提供的代码示例时无法重现错误。

此外,您的代码示例有一些错误,您创建连接为 $ sql ,但检查 $ mysqli 是否存在连接错误,您应该检查$ sql。所以我已将 $ mysqli 的所有内容更改为 $ sql ,您检查连接错误的更常规方法是检查 connect_errno 和然后阅读 connect_error

中的消息
$sql = new mysqli(null,
    'your-username', // username
    'your_password_or_blank_if_using_root',
    'database_name',
    null,
    '/cloudsql/project_id:instance_name'
);

if ($sql->connect_errno) {
    echo 'no';
    die('Connect Error (' . $sql->connect_errno . ') '. $sql->connect_error);
} else {
    echo 'yes\n';
}

答案 1 :(得分:0)

  1. 套接字文件实际上是/ cloudsql / project_id:region:instance_id(即myproject-prod:us-central1:instance-1)
  2. 如果您使用的是灵活虚拟机,您可能希望打开其中一个实例的调试,然后通过SSH连接到它,然后您可以验证套接字文件确实存在并尝试连接到它:

    sudo apt-get update sudo apt-get install mysql-client mysql -u your-username -S / cloud / sql / your-socket-file -p