PostgreSQL 適用的 Cloud SQL 錯誤訊息

本頁討論 Cloud SQL 中遇到的一些錯誤訊息。

總覽

Cloud SQL 的錯誤訊息來源眾多,且會顯示在許多地方。部分錯誤訊息來自資料庫引擎本身、部分來自 Cloud SQL 服務、部分來自用戶端應用程式,還有部分是呼叫 Cloud SQL Admin API 時傳回的訊息。

本頁列出 Cloud SQL 中最常見的錯誤,如果在這裡找不到您要查詢的錯誤代碼或訊息,請參閱以下來源參考資料:

如果找不到您看到的錯誤訊息參考資料,也可以在下列位置搜尋,其他使用者可能會有相關經驗:

作業錯誤

A | B | C | D | E | F | G | I | L | M | N | O | P | Q | R | S | T | U | W

錯誤訊息 疑難排解
找不到網路中已分配的 IP 範圍。 修改或移除已分配的範圍後,虛擬私有雲對等互連未更新。

您需要 修改私人連線。使用下列指令,並務必使用 --force 引數:

gcloud services vpc-peerings update \
--network=VPC_NETWORK \
--ranges=ALLOCATED_RANGES \
--service=servicenetworking.googleapis.com \
--force
錯誤訊息 疑難排解
要求錯誤。 這則訊息可能有多種原因。Illegal Argument 是最常見的其中一種。在這種情況下,要求使用的引數有誤,或是引數值無效。如果是其他原因,錯誤訊息可能包含實用提示。

如果是 Illegal Argument,請檢查要求,確保每個引數都允許使用,且引數的每個值都有效。如為其他原因,請查看記錄檔,瞭解是否有更多資訊。

錯誤訊息 疑難排解
無法修改 CreateConnection 中的分配範圍。請改用 UpdateConnection。 修改或移除已分配的範圍後,虛擬私有雲對等互連未更新。

您需要修改私人連線。 請使用下列指令,並務必使用 --force 引數:

gcloud services vpc-peerings update \
--network=VPC_NETWORK \
--ranges=ALLOCATED_RANGES \
--service=servicenetworking.googleapis.com \
--force
連線已遭對等方重設。

如果您嘗試執行匯出作業,但 Cloud Storage 在特定時間範圍內未收到任何資料,連線就會重設。

使用 pg_dump 手動匯出。

Constraints/sql.restrictAuthorizedNetworks。 複製作業遭到 Authorized Networks 設定封鎖。Authorized Networks 在 Google Cloud 控制台的「連線」部分中,設定為使用公開 IP 位址,且基於安全考量,不允許複製。

盡可能從 Cloud SQL 執行個體中移除所有 Authorized Networks 項目。否則,請建立副本,但不要包含任何 Authorized Networks 項目。

錯誤訊息 疑難排解
資料庫「user」不存在。 gcloud sql connect --user 只能搭配預設postgres使用者使用。

連線至預設使用者,然後變更使用者。

磁碟空間已滿。 建立副本時,主要執行個體的磁碟大小可能會達到上限。

編輯主要執行個體,將其升級為較大的磁碟大小。

錯誤訊息 疑難排解
無法建立子網路。 IP 範圍中沒有其他可用位址。

在已分配的 IP 範圍中找不到可用區塊。請為這個服務供應商分配新的範圍。

分配的 IP 範圍內沒有其他可用位址。

請考慮下列可能情況:

  • 分配給私人服務連線的 IP 範圍小於 /24。
  • 為私人服務連線分配的 IP 範圍大小,不足以容納 Cloud SQL 執行個體數量。
  • 如果在多個區域建立執行個體,分配的 IP 範圍大小需求會更大。請參閱已分配範圍大小

在上述任一情況下,您可以選擇擴展現有範圍,或 為私人服務連線分配額外的 IP 範圍

如要分配新的範圍,請注意不要建立與現有分配項目重疊的分配項目。

建立新的 IP 範圍後,請使用下列指令更新 VPC 對等互連:

gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com
--ranges=OLD_RESERVED_RANGE_NAME,NEW_RESERVED_RANGE_NAME \
--network=VPC_NETWORK
--project=PROJECT_ID \
--force

如果擴展現有分配範圍,請務必只增加分配範圍,不要縮小。舉例來說,如果原始分配範圍為 10.0.10.0/24,則新的分配範圍至少要為 10.0.10.0/23。

一般來說,如果從 /24 分配開始,每項條件 (額外執行個體類型群組、額外區域) 將 /mask 遞減 1,就是不錯的經驗法則。舉例來說,如果嘗試在同一個分配作業中建立兩個執行個體類型群組,從 /24 變更為 /23 就足夠。

擴充現有 IP 範圍後,請使用下列指令更新 VPC 對等互連:

gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com
--ranges=RESERVED_RANGE_NAME \
--network=VPC_NETWORK \
--project=PROJECT_ID \
--force
錯誤訊息 疑難排解
(gcloud.sql.connect) It seems your client does not have ipv6 connectivity and the database instance does not have an ipv4 address. 您嘗試使用 Cloud Shell 連線至私人 IP 執行個體。

目前不支援從 Cloud Shell 連線至只有私人 IP 位址的執行個體。

錯誤訊息 疑難排解
內部錯誤。 專案可能缺少這項功能所需的 Service Networking 服務帳戶。

如要修復服務權限,請停用 Service Networking API, 等待五分鐘,然後重新啟用。

要求無效:執行個體的服務網路設定不正確。 專案未啟用 Service Networking API

在專案中啟用 Service Networking API。如果您嘗試將私人 IP 位址指派給 Cloud SQL 執行個體時看到這項錯誤,且您使用的是共用虛擬私有雲,則也需要為主專案啟用 Service Networking API

錯誤訊息 疑難排解
網路關聯失敗。 專案未啟用 Service Networking API

在專案中啟用 Service Networking API。如果您嘗試將私人 IP 位址指派給 Cloud SQL 執行個體時看到這項錯誤,且您使用的是共用虛擬私有雲,則也需要為主專案啟用 Service Networking API

錯誤訊息 疑難排解
還有其他正在進行的作業,因此作業失敗。 Cloud SQL 中的大多數作業都是同步作業。一次只能執行一項作業。

請先等待上一個作業完成,再開始其他作業。

這項作業不適用於這個執行個體。 這是對 instances.restoreBackup 進行 API 呼叫時傳回的錯誤,表示您無法將備份還原至儲存空間大小 (XX GB) 小於備份大小 (YY GB) 的執行個體。

編輯目標執行個體,增加儲存空間大小。

錯誤訊息 疑難排解
使用者「postgres」的密碼驗證失敗。 建立新的 PostgreSQL 適用的 Cloud SQL 執行個體時,系統會建立預設管理員使用者 postgres,但不會建立密碼。您必須先 為使用者設定密碼,使用者才能登入。

錯誤訊息 疑難排解
超過配額。 您已達到每分鐘或每日配額的上限。查看 Cloud SQL 的配額與限制

透過Google Cloud 主控台要求增加配額。

錯誤訊息 疑難排解
剩餘的連線運算單元皆為保留狀態。 連線數量已達上限。

增加 max_connections 旗標的值。 請參閱「設定資料庫旗標」。

要求缺少有效的 API 金鑰。 您可能沒有有效的服務帳戶金鑰 JSON 檔案,或該檔案未儲存在預期位置。

確認您存在 GOOGLE_APPLICATION_CREDENTIALS 環境變數中的位置具有有效的服務帳戶金鑰 JSON 檔案,且該變數指向正確的位置。

錯誤訊息 疑難排解
SSL 錯誤:填補無效。 伺服器憑證錯誤。

建立新的伺服器憑證並輪替

發生系統錯誤。
  • 使用者可能沒有所需的 Cloud Storage 權限。
  • 資料庫表格可能不存在。

請嘗試下列做法:

  • 確認您在值區上至少擁有 WRITER 權限,且在匯出檔案上擁有 READER 權限。如要進一步瞭解如何在 Cloud Storage 中設定存取權控管,請參閱建立及管理存取權控管清單
  • 確認資料表是否存在。如果資料表確實存在,請確認您具備儲存空間值區的適當權限。

錯誤訊息 疑難排解
資料表定義已變更。 匯出期間表格發生變更。

如果在匯出作業期間使用下列陳述式,傾印交易可能會失敗:

  • ALTER TABLE
  • CREATE TABLE
  • DROP TABLE
  • RENAME TABLE
  • TRUNCATE TABLE

請從傾印作業中移除任何這類陳述式。

暫時檔案大小超過 temp_file_limit。 資料庫用量的 temp_file_limit 標記設定過低。

增加 temp_file_limit 大小。 請參閱「設定資料庫旗標」。

(逾時) 期間。 CSV 和 SQL 格式的匯出方式不同。SQL 格式包含整個資料庫,因此可能需要較長時間才能完成。

使用 CSV 格式並執行多個較小的匯出作業,縮減每項作業的大小和長度。

連線數量過多。 如果 max_connections 旗標值設得太高,可能會導致這項錯誤。如果啟用旗標的順序有誤,也可能導致這個問題。

降低 max_connections 標記值,或與 客戶服務團隊聯絡,要求移除標記,然後再執行 hard drain。這樣一來,執行個體就會強制在其他主機上重新啟動,並使用新的設定,而不需要旗標或設定。

錯誤訊息 疑難排解
未經授權,無法連線。 授權會在多個層級進行,因此可能有多種原因:
  • 在資料庫層級,資料庫使用者必須存在,且密碼相符
  • 在專案層級,使用者可能沒有正確的 IAM 權限,包括 serviceusage.services.usecloudsql.instances.connect 權限。
  • 在網路層級,如果 Cloud SQL 執行個體使用公開 IP,連線的來源 IP 必須位於已授權的網路中。

請嘗試下列做法:

  • 確認使用者存在且密碼相符。
  • Service Usage Consumer 角色指派給使用者帳戶。 這個角色包含 serviceusage.services.use 權限。
  • 如果使用公開 IP,請確認來源 IP 位於授權網路中。
錯誤訊息 疑難排解
x509:憑證對任何名稱都無效。 已知問題: Cloud SQL Proxy Dialer 目前與 Go 1.15 不相容。

在修正問題前,請參閱 GitHub 上的這項討論,其中包含解決方法。

不明錯誤

下表列出一些已知的 Unknown Error 案例,並在適用情況下提供具體解決方法。不過,這並非完整清單。如果表格中沒有您的案件,請查看 Cloud SQL 的公開問題追蹤器。如果找不到問題,請考慮 提交報告,或查看其他支援選項

作業 問題可能出在... 建議做法...
新增使用者 如果使用者已存在於資料庫中,嘗試新增時可能會發生這個錯誤。 確認資料庫中沒有該使用者。
備份 如果在自動或手動備份期間看到這則訊息,可能是執行個體磁碟空間已滿。 如果暫時檔案大小佔用太多空間,您可以重新啟動執行個體來移除檔案,並釋出磁碟空間。否則,您可能需要將執行個體升級為較大的磁碟大小。
複製 如果所選可用區的資源不足,就可能發生這種情況。 請嘗試使用該區域中的其他可用區,或稍後再試。
建立執行個體
  • 如果您嘗試重複使用最近刪除的執行個體名稱,就可能發生這種情況。
  • 連線不穩定也可能導致這個問題。
  • 記錄可能顯示專案未啟用 Service Networking API。
  • 嘗試平行建立多個執行個體時,也可能發生這個錯誤。舉例來說,Terraform 指令碼可讓您嘗試這麼做。
  • 另一個原因可能是特定資源已耗盡,或是超過配額限制。在記錄中尋找類似下列內容的項目: Quota 'INTERNAL_FORWARDING_RULES_WITH_TARGET_INSTANCE_PER_NETWORK' exceeded. Limit: 100.0 globally
  • 如果 IP 範圍中沒有其他可用位址,子網路建立作業就會失敗,並顯示這項錯誤。
  • 執行個體名稱必須在刪除後約一週才能重複使用。
  • 如果連線問題時好時壞,唯一的解決方法就是 再試一次。
  • 為專案啟用 Service Networking API
  • 平行執行個體建立指令碼只會成功建立其中一個執行個體。修改指令碼,等待每個執行個體建立作業完成,再繼續下一個作業。
  • 分配新範圍
建立備用資源 記錄檔中可能會有更具體的錯誤。 檢查 Cloud Logging 中的記錄,找出實際錯誤。

如果錯誤是 set Service Networking service account as servicenetworking.serviceAgent role on consumer project,請停用並重新啟用 Service Networking API。這項動作會建立服務帳戶,以便繼續進行程序。

如果錯誤是 The instance creation failed due to a permission error with the CMEK key defined,請檢查金鑰設定和位置

匯出 如果您在嘗試將資料庫匯出至 Cloud Storage bucket 時看到這則訊息,可能是因為頻寬問題導致轉移失敗。 Cloud SQL 執行個體可能與 Cloud Storage 值區位於不同區域。從一個洲讀取資料並寫入另一個洲,會耗用大量網路資源,並可能導致這類間歇性問題。
容錯移轉 (自動) 如果服務偵測到主要執行個體仍有回應,自動容錯移轉作業可能會產生這則錯誤訊息。 在此情況下,您無須採取任何行動。由於不需要容錯移轉,因此不會發生容錯移轉。
匯入 匯入檔案可能含有需要超級使用者角色的陳述式。 編輯檔案,移除需要超級使用者角色的陳述式。

Cloud SQL 也會使用一些第三方二進位檔 (例如 mysqld),這些二進位檔可能會產生不明錯誤訊息。這類錯誤是第三方二進位檔的內部錯誤,不在 Cloud SQL 的範圍內。不過,有時您可以在大約同一時間的 Cloud SQL 記錄檔中,找到更具體的錯誤。

此外,有時會出現不明的錯誤代碼。在這個例子中,完整訊息可以是 Unknown Error Code