我正在设置一个需要连接到云上的数据库(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的权限)
任何想法?
谢谢
答案 0 :(得分:1)
使用Instance connection name
(cloudtest-2412**:southamerica-east1:store
)代替MY_GOOGLE_SQL_PUBLIC_IP
进行连接。
您可以在Cloud SQL实例的“实例详细信息”页面上找到它。