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 在 Cloud de Confiance 控制台的「連線」部分設為公開 IP 位址,且基於安全性考量,不允許複製。

如果可以,請從 Cloud SQL 執行個體中移除所有 Authorized Networks 項目。否則,請 建立 不含任何 Authorized Networks 項目的副本。

錯誤訊息 疑難排解
資料庫「user」不存在。 gcloud sql connect --user 僅適用於預設的 postgres 使用者。

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

磁碟已滿。 建立副本時,主要執行個體磁碟空間可能會用盡。

編輯主要執行個體,升級至較大的磁碟。

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

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

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

請考慮以下可能的情境:

  • 為私人服務連線分配的 IP 範圍大小小於 /24。
  • 私人服務連線的分配 IP 範圍太小,無法容納 Cloud SQL 執行個體數量。
  • 如果是在多個區域建立執行個體,則分配的 IP 範圍大小要求會更大。請參閱分配範圍大小

針對上述各個情境,您可以選擇擴充現有 IP 範圍,或為私人服務連線分配額外的 IP 範圍。

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

建立新的 IP 範圍後,請使用下列指令更新虛擬私有雲對接:

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 範圍後,請使用下列指令更新虛擬私有雲對接:

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 設定有誤。 專案未啟用 Service Networking API。

在專案中啟用 Service Networking API。如果您在嘗試將私人 IP 位址指派給 Cloud SQL 執行個體時看到這則錯誤訊息,且您使用的是 Shared VPC,則也需要為託管專案啟用 Service Networking API。

執行個體不符合建立副本的條件。 主要執行個體不符合必要的複製條件。如需相關規定清單,請參閱「複製作業限制」。
錯誤訊息 疑難排解
網路關聯失敗。 專案未啟用 Service Networking API。

在專案中啟用 Service Networking API。如果您在嘗試將私人 IP 位址指派給 Cloud SQL 執行個體時看到這則錯誤訊息,且您使用的是 Shared VPC,則也需要為託管專案啟用 Service Networking API。

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

請等待前一項作業完成,再開始另一項作業。

錯誤訊息 疑難排解
使用者「postgres」的密碼驗證失敗。 建立新的 PostgreSQL 適用的 Cloud SQL 執行個體時,系統會建立預設管理員使用者 postgres,但不會建立密碼。您必須先為這位使用者設定密碼,對方才能登入。
錯誤訊息 疑難排解
已超過配額。 已達每分鐘或每日配額上限。查看 Cloud SQL 的配額與限制。

透過Cloud de Confiance 控制台申請提高配額。

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

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

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

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

錯誤訊息 疑難排解
SSL 錯誤:邊框間距無效。 伺服器憑證錯誤。

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

發生系統錯誤。
  • 使用者可能不具備所有必要的 Cloud Storage 權限。
  • 資料庫資料表可能不存在。

試試這些做法 ...

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

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

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

  • 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.use 或 cloudsql.instances.connect 權限。
  • 在網路層級,如果 Cloud SQL 執行個體使用公開 IP,連線的來源 IP 必須位於授權網路中。

試試這些做法 ...

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

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

不明錯誤

下表列出可能發生 Unknown Error 的已知情況,以及適用的特定解決方法。不過,這份清單並未涵蓋所有情況。如果表格中沒有您的案例,請查看 Cloud SQL 的公開 Issue Tracker。如果找不到問題,請考慮提交報告,或查看其他支援選項。

作業 問題可能出在... 試試以下功能...
新增使用者 如果使用者已存在於資料庫中,您嘗試新增使用者時可能會發生這項錯誤。 請確認資料庫中沒有該使用者。
備份 如果在自動或手動備份期間看到這則訊息,可能是執行個體磁碟已滿。 如果暫存檔案占用過多空間,您可以重新啟動執行個體來移除檔案,並釋出磁碟空間。否則,您可能需要將執行個體升級至較大的磁碟大小。
複製 如果所選可用區的資源不足,就可能發生這種情況。 請改用該區域的其他可用區,或稍後再試。
建立執行個體
  • 如果您嘗試重複使用最近刪除的執行個體名稱,就可能發生這種情況。
  • 也可能是連線不穩所致。
  • 記錄可能會顯示專案未啟用 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,請按照「建立服務代理並授予角色」中的操作說明,手動建立必要的服務帳戶。

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

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

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

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