PAYATHON 2026

Google BigQuery 提示 Billing has not been enabled

数据小许

结论

这类错误通常与 load 命令或表结构无关。问题往往出在 BigQuery 作业所属的 Google Cloud 项目没有关联有效的结算账号。

填写了银行卡,并不代表结算已经启用。银行卡验证失败、结算账号被暂停,或结算配置尚未生效时,BigQuery 仍会返回:

Billing has not been enabled for this project.

本例的原因是信用卡被拒。更换有效银行卡后,控制台显示以下状态,才表示结算已正常启用:

Billing is enabled for all active, billable services

排查步骤

1. 确认实际执行作业的项目

先检查 bq 当前使用的项目:

gcloud config get-value project

也可以显式指定项目,以免默认配置指向另一个未启用结算的项目:

bq --project_id=PROJECT_ID load \
  ct.ads \
  /tmp/data.csv \
  'id:INTEGER,source:STRING,clicks:INTEGER'

将 PROJECT_ID 替换为已启用 BigQuery 和结算的项目 ID。

数据集所在的项目不一定是提交作业时使用的项目。报错通常指向承担该作业费用的项目。

2. 检查项目是否关联有效的结算账号

如果已经安装并登录 Google Cloud CLI,可以查看项目的结算状态:

gcloud billing projects describe PROJECT_ID

正常情况下,项目应已启用结算,并关联一个有效的 billing account。还可以列出当前账号有权访问的结算账号:

gcloud billing accounts list

如果结算账号尚未关联,或已被关闭、暂停,需要前往 Google Cloud Console 的“结算”页面重新关联或恢复。

3. 检查付款方式是否验证成功

如果控制台一直提示“结算信息可能需要几分钟更新”,不要只确认信用卡是否已经填写,还要检查:

  • 银行卡是否被发卡行拒绝;
  • 是否需要完成额外的身份或交易验证;
  • 结算账号是否处于暂停、关闭或待验证状态;
  • 是否还有未解决的付款问题;
  • 当前项目是否关联了刚配置的结算账号。

付款方式验证失败后,控制台有时仍会保留已填写的结算信息,但项目并不能正常使用结算功能。更换有效的付款方式后,需要等待控制台明确显示结算已启用。

4. 等待配置同步后重新提交

刚关联结算账号或更换付款方式时,状态可能不会立即同步到 BigQuery。确认控制台中的状态正常后,稍等片刻,再重新运行:

bq --project_id=PROJECT_ID load \
  ct.ads \
  /tmp/data.csv \
  'id:INTEGER,source:STRING,clicks:INTEGER'

如果仍然报错,可以重新登录,并确认 CLI 当前使用的账号和配置:

gcloud auth list
gcloud config list

其他需要区分的问题

以下情况也可能造成加载失败,但通常会出现不同的错误:

  • BigQuery API 未启用;
  • 当前账号没有创建作业或写入表的权限;
  • 数据集位于其他项目,而当前账号无权访问;
  • 表结构与 CSV 数据不匹配;
  • 项目受到组织政策或结算预算策略限制。

如果错误信息明确为 Billing has not been enabled,应先检查项目、结算账号和付款方式,不必急着修改 CSV 文件或 schema。

Google Cloud Console 的界面和状态文案可能会有变化,但判断标准始终一样:项目必须关联一个状态有效的结算账号,付款方式也必须通过验证。

备注:内容仅供参考。