Google Cloud SQL与Google App Engine之间的连接-超时

时间:2019-05-20 16:44:25

标签: php mysql google-app-engine

我正在设置一个需要连接到云上的数据库(Google Cloud sql)的应用程序。我有一个连接到数据库并返回我需要的所有数据的php文件。它可以在本地主机上正常工作,但是我无法使其在云上运行。

这是我的.php文件:


class ImageLoadOperation: ConcurrentOperation {
    var url: String
    var completionHandler: ImageLoadOperationCompletionHandlerType
    var image: UIImage?

    init(url: String, completionHandler: ImageLoadOperationCompletionHandlerType) {
        self.url = url
        self.completionHandler = completionHandler
    }

    override func main() {
        if isCancelled {
            return
        }

        UIImage.downloadImageFromUrl(url) { [weak self] (image) in
            guard let strongSelf = self,
                !strongSelf.isCancelled,
                let image = image else {
                    return
            }
            strongSelf.image = image
            strongSelf.completionHandler?(image)
        }
    }
}

这是我的app.yaml:

<?php


$conn = mysqli_connect("[MY_GOOGLE_SQL_PUBLIC_IP]", "root", "123", "mysql");

if (!$conn) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}else{

echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL;
echo "Host information: " . mysqli_get_host_info($conn) . PHP_EOL;


}

mysqli_close($conn);

?>

如果我在本地主机(127.0.0.1:8888)上运行php文件,则会得到与我在google sql上的数据库的连接。但是,当我将(gcloud app deploy)部署到应用引擎并尝试访问google提供的网址时,出现以下错误:

错误:无法连接到MySQL。调试错误:2002调试错误:连接超时

* sql数据库和app引擎在同一个项目中,因此我不需要授予任何特殊权限(例如,在访问本地主机时必须授予本地ip的权限)

任何想法?

谢谢

1 个答案:

答案 0 :(得分:1)

使用Instance connection namecloudtest-2412**:southamerica-east1:store)代替MY_GOOGLE_SQL_PUBLIC_IP进行连接。

您可以在Cloud SQL实例的“实例详细信息”页面上找到它。