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 手動匯出。

限制/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) 您的用戶端似乎沒有 IPv6 連線,且資料庫執行個體沒有 IPv4 位址。 您嘗試使用 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 中的大多數作業都是同步的。您一次只能執行一個。

請等待先前作業完成,再開始其他作業。

作業不適用於這個例項。 這個錯誤是從 API 呼叫傳回至 instances.restoreBackup,表示您無法從備份還原至儲存空間大小 (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 值區時看到這則訊息,可能是由於頻寬問題導致轉移作業失敗。 Cloud SQL 執行個體可能位於與 Cloud Storage 值區不同的區域。從一個大洲讀取及寫入資料到另一個大洲,需要大量使用網路,可能會導致這類間歇性問題。
容錯移轉 (自動) 如果服務偵測到主要執行個體仍可回應,自動容錯移轉作業就可能會產生此錯誤訊息。 在這種情況下,您無須採取任何行動。因為不需要,所以不會發生容錯移轉。
匯入 匯入檔案可能包含需要超級使用者角色的陳述式。 編輯檔案,移除任何需要超級使用者角色的陳述式。

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

此外,有時也會出現不明的錯誤代碼。在這種情況下,完整訊息可以是 Unknown Error Code