Skip to content

錯誤碼

來源:backend/common/error.go。錯誤同時帶 application code + gRPC code;本頁列 application code。

沒列在這頁的錯誤一律歸 Internal (1),使用者只會看到「Internal error」。詳細原因會被寫到 server log。

通用(0–99)

Code名稱HTTP 對應含意怎麼處理
0Ok200無錯
1Internal500內部錯誤看 server log;通常是 bug
2NotAuthorized401 / 403未認證 / 無權限檢查登入狀態、IAM binding
3Invalid400請求格式錯 / 參數不合法看錯誤訊息修正請求
4NotFound404資源不存在確認 ID / 是否被刪
5Conflict409衝突(重複名稱、版本錯位)重新讀取後重試
6NotImplemented501功能未實作升級到含此功能的版本
7SizeExceeded413Payload / 結果過大縮小範圍;參考 sql_result_size 設定

DB 連線 / 執行(101–199)

Code名稱含意怎麼處理
101DBConnectionFailure接不到目標 DB檢查 instance host / port / credentials / 網路 / pg_hba
102DBExecutionErrorDB 端執行錯誤(SQL 失敗、 timeout)看 task run log;多半是 SQL 本身或目標 DB 狀態問題

DB Migration(201–299)

Code名稱含意怎麼處理
201MigrationSchemaMissingmetastore migration schema 沒建好重跑 server startup;看 startup log
202MigrationAlreadyApplied同版本 migration 已套用略過或調整版本號
203MigrationOutOfOrder版本順序錯補齊中間缺漏版本
205MigrationPending有 pending migration 未跑完等待 / 看 server log
206MigrationFailedmigration 執行失敗看 server log + revision 表;可能要人工修補

Task 時機(301–399)

Code名稱含意怎麼處理
301TaskTimingNotAllowed變更時間不允許(凍結期 / 維護窗口外)改窗口或申請例外

Task SQL 類型(401–499)

提交 SQL 與宣告 task type 不一致時觸發:

Code名稱含意
401TaskTypeNotDML宣告 DML 但實際非 DML
402TaskTypeNotDDL宣告 DDL 但實際非 DDL
403TaskTypeDropDatabaseDROP DATABASE
404TaskTypeCreateDatabaseCREATE DATABASE
405TaskTypeDropTableDROP TABLE
406TaskTypeDropIndexDROP INDEX
407TaskTypeDropColumnDROP COLUMN
408TaskTypeDropPrimaryKeyDROP PRIMARY KEY
409TaskTypeDropForeignKeyDROP FOREIGN KEY
410TaskTypeDropCheckDROP CHECK

401–410 多半是 plan check 階段就會擋下;如果走到 task 層才報,代表 plan check 被人工 override。

回應結構

JSON 錯誤回應的標準格式(gRPC-gateway 轉譯):

json
{
  "code": 3,
  "message": "invalid plan: target database not found",
  "details": [
    {
      "@type": "type.googleapis.com/google.rpc.BadRequest",
      "fieldViolations": [
        { "field": "spec.targets[0]", "description": "database not in project" }
      ]
    }
  ]
}

code 為 application code(本頁列的數字),不是 HTTP status;HTTP status 由 gateway 依下表對應:

application code 範圍HTTP status
0200
2401 / 403
3, 7400 / 413
4404
5409
1, 6, 其他500 / 501
101, 102, 2xx, 3xx, 4xx400(夾帶 application code 細節)

相關

Argus — 公司內部資料庫變更審計平台