gcloud sql instances create创建实例提示项目不存在报错排查
gcloud sql instances create 报「Projects instance not found/flag不支持」排查方案
这个报错的提示信息存在误导性,绝大多数场景下不是真的找不到目标项目,而是参数解析失败触发的误报,无论是否传入正确的--project参数都可能触发,按以下优先级排查即可:
- 优先修复已知的参数兼容问题
你当前使用的参数里存在明确的已废弃/不支持项,是触发该报错的最高频原因:--assign-ip参数已经在当前稳定版gcloud SDK中废弃,需要替换为--assign-public-ip- 稳定版
gcloud sql instances create命令不支持直接传入--cpu、--memory参数,这两个参数仅在beta版命令中可用,稳定版自定义机器规格需要直接传入--machine-type参数,取值格式为db-custom-<CPU核心数>-<内存大小MB>,比如2核4G对应db-custom-2-4096,固定规格直接传对应tier值即可(比如1核2G共享规格传--tier=db-g1-small)
- 升级gcloud SDK到最新版本
旧版本gcloud存在Cloud SQL参数解析bug,会把合法参数误判为无效flag,先执行gcloud components update升级到最新稳定版,升级后执行gcloud config set project 你的实际项目ID配置默认项目,再重试命令排除版本问题。 - 逐类校验剩余参数合法性
排除以上问题后,逐类检查参数格式和取值:- 枚举类参数取值校验:
--database-version必须为Cloud SQL官方支持的版本枚举值(比如MYSQL_8_0、POSTGRES_14、SQLSERVER_2019_STANDARD),--storage-type仅支持SSD/HDD两个取值,传错值会被判定为无效flag - 格式类参数校验:
--database-flags必须为key=value格式的逗号分隔列表,不能传入数据库不支持的flag项;--authorized-networks必须为合法CIDR格式的逗号分隔列表,格式错误会触发参数校验失败 - 数值类参数校验:
--storage-size单位为GB,取值不能低于Cloud SQL对应版本的最小存储要求
- 枚举类参数取值校验:
- 校验项目侧基础配置
参数排查完仍报错的话,验证项目侧状态:- 执行
gcloud projects describe $PROJECT_ID确认当前登录账号对目标项目有访问权限,项目未被暂停、计费状态正常 - 执行
gcloud services list --enabled | grep sqladmin确认项目已经启用Cloud SQL Admin API,未启用的话执行gcloud services enable sqladmin.googleapis.com开通即可
- 执行
- 最小参数集定位问题
如果以上步骤都没定位到根因,把所有非必填参数移除,用最小参数集测试创建:
最小命令运行成功的话,逐个加回原有参数,每加一个参数执行一次测试,就能精准定位到触发报错的具体参数项。gcloud sql instances create test-instance \ --database-version=MYSQL_8_0 \ --tier=db-n1-standard-1 \ --region=us-central1 \ --project=$PROJECT_ID
内容的提问来源于stack exchange,提问作者Sharip Alikhanov
相关产品推荐
相关产品推荐

