错误:(gcloud.sql.connect)HTTPError 400:传入请求包含无效数据

Posted

技术标签:

【中文标题】错误:(gcloud.sql.connect)HTTPError 400:传入请求包含无效数据【英文标题】:ERROR: (gcloud.sql.connect) HTTPError 400: The incoming request contained invalid data 【发布时间】:2019-05-10 16:04:22 【问题描述】:

问题

我无法使用命令行连接到我的 Cloud SQL postgres 实例,该命令行之前一直在运行:

gcloud sql connect <instance_name> --user=<username>

这是我得到的错误:

ERROR: (gcloud.sql.connect) HTTPError 400: The incoming request contained invalid data.

版本

通过我的三星 Galaxy S8 运行 macOS Mojave 10.14 (18A391) 并连接 4G 热点。

$ gcloud --version

Google Cloud SDK 227.0.0
bq 2.0.39
core 2018.11.30
gsutil 4.34

日志

使用--log-http 标志运行命令,它会返回:


 "error": 
  "errors": [
   
    "domain": "global",
    "reason": "invalidRequest",
    "message": "The incoming request contained invalid data."
   
  ],
  "code": 400,
  "message": "The incoming request contained invalid data."
 

问题

为什么会发生这种情况,我可以做些什么来解决它?

【问题讨论】:

运行gcloud info。靠近输出底部的将是 gcloud 日志记录目录。再次运行您的命令,然后查看日志文件。您可以使用--verbosity=(调试、信息、警告、错误、关键、无)选项控制记录的信息量。 您的热点很可能使用 HTTP 标头:tethered 4G hotspot via my Samsung Galaxy S8 这似乎是原因。您是否建议解决此问题? 一种方法是在浏览器中使用 Cloud Shell。 【参考方案1】:

显然这与我的系留连接有关。它可以在我家里的网络上运行。所以这不是gcloud 的真正问题。但是,我仍然不知道为什么在使用我的电话网络时它不起作用。

【讨论】:

您的系留连接可能会为您提供 IPv6 地址。 AFAIK Cloud SQL Postgres 还不支持 IPv6;在issuetracker.google.com/72219717有一个关于 IPv6 + Cloud SQL v2 的功能请求 gcloud beta sql connect 将通过 Cloud SQL 代理连接,并使用 IPV6 地址。【参考方案2】:

尝试使用代理进行连接。 请按照以下链接中提供的步骤进行操作: https://cloud.google.com/sql/docs/postgres/connect-admin-proxy

或者使用连接部分中的添加网络选项添加您的服务器 CIDR 地址。

【讨论】:

【参考方案3】:

我在 MacOS 上也遇到了这个问题(虽然不是网络共享),并且仅在我的网络首选项中将 ipv6 切换到链接本地修复了它。正如对已接受答案的评论所提到的,这里仍有一个关于此问题的开放功能请求:https://issuetracker.google.com/issues/72219717。

【讨论】:

这非常适合作为一个快速简单的解决方案

以上是关于错误:(gcloud.sql.connect)HTTPError 400:传入请求包含无效数据的主要内容,如果未能解决你的问题,请参考以下文章

集群crsd服务失败报crs-4535错误

GuzzleHttp\Exception\RequestException cURL 错误 3:(参见 https://curl.haxx.se/libcurl/c/libcurl-errors.ht

如何遍历并删除Dictionary集合内容

如何遍历并删除Dictionary集合内容

错误:连接超时:连接

AUMIDIEffectBase,错误验证插件