【问题标题】:PDOException' with message 'SQLSTATE[HY000] [2002] Connection timed out' when trying to connect to google cloud sql尝试连接到谷歌云 sql 时,带有消息“SQLSTATE[HY000] [2002] 连接超时”的 PDOException'
【发布时间】:2016-02-04 22:59:46
【问题描述】:

各位会员
所以我试图从外部站点连接到谷歌云 sql

我在 Instance -> Access Control -> Authorization 处授权了 google cloud 中服务器的 ip

并且该实例还被分配了一个 IP,比如说“X.X.X.X”, 并且还使用用户名“用户名”和密码“密码”创建了一个用户

现在我使用的连接google cloud sql的连接代码如下

$db = new pdo('mysql:host=X.X.X.X;dbname=db','username','password');

我尝试打开页面,我收到以下错误

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] Connection timed out' in /home/kannadakavana/public_html/test.php:17 Stack trace: #0 /home/kannadakavana/public_html/test.php(17): PDO->__construct('mysql:host=X....', 'username', '') #1 {main} thrown in /home/kannadakavana/public_html/test.php on line 17

我做错了什么?

【问题讨论】:

  • 我尝试授权我的本地系统 ip 并运行脚本,它工作!所以这里的问题实际上是防火墙谢谢大家的支持:)
  • 你是如何解决这个问题的?

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


【解决方案1】:

默认情况下,Cloud SQL 实例未启用 IPv4。

您是否启用了 IPv4 地址?它位于访问控制 > IP 地址选项卡下。

【讨论】:

  • 是的,先生,我确实启用了 IPV4 地址,并且我将其用作mysql:host="assigned ip" 我这样做对吗?
  • 我们必须提供任何端口号吗?
  • 它使用默认的 MySQL 端口号——你不需要这样做。当您说mysql:host="assigned ip" 时,我假设它类似于mysql:host="10.0.0.1"(另一个有效的IP 地址)。可以用命令行mysql连接吗?
  • 实际上问题已解决,我使用系统的本地 ip 进行了授权!是我服务器的防火墙没有让服务器连接到云sql无论如何谢谢您的支持先生:)
【解决方案2】:

如果 CloudSQL 实例是按需实例,您有时会在实例启动时第一次尝试连接超时。

如果这是问题所在,那么解决方案要么是始终开启的实例,要么是(最好)自动连接重试并进行回退。

【讨论】:

  • 对不起,先生,我没有得到这部分an automated connection retry with back-off,如果这意味着重新加载页面,我确实尝试每 5 分钟重新加载一次页面,持续一个小时
猜你喜欢
  • 2020-01-22
  • 2019-11-29
  • 2017-10-19
  • 2015-11-01
  • 2019-08-21
  • 1970-01-01
  • 2015-10-21
  • 2016-08-23
相关资源
最近更新 更多