错误:(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:传入请求包含无效数据的主要内容,如果未能解决你的问题,请参考以下文章
GuzzleHttp\Exception\RequestException cURL 错误 3:(参见 https://curl.haxx.se/libcurl/c/libcurl-errors.ht