簡體   English   中英

App Engine 無法連接到 Cloud SQL:連接被拒絕

[英]App Engine can't connect to Cloud SQL: Connection refused

如果有人可以幫助我解決以下問題,我會很高興:

概括

我在一個新創建的 GCP 項目中,我正在嘗試從App Engine (一個 python 應用程序)連接到Cloud SQL (一個 postgresql 實例)。 但我收到一個錯誤:

OperationalError: (psycopg2.OperationalError) connection to server on socket "/cloudsql/<project_id>:southamerica-east1:test-instance/.s.PGSQL.5432" failed: Connection refused

python 應用程序/App Engine(標准環境)

該應用程序是使用FastAPI創建的 API。 它使用sqlmodel/sqlalchemy處理數據庫和psycopg2-binary作為適配器。 這是連接到數據庫並創建表的代碼:

import sqlalchemy
from sqlmodel import create_engine

connection_name = "<project_id>:southamerica-east1:test-instance" # Here I omitted the real project id

url = sqlalchemy.engine.url.URL.create(
    drivername="postgresql+psycopg2",
    username="some-username",
    password="some-password",
    database="some-database-name",
    connection_name = connection_name,
    query={"host": "{}/{}".format("/cloudsql", connection_name)},
)
engine = create_engine(url)

def create_db_and_tables():
    SQLModel.metadata.create_all(engine)

奇怪的是,我過去曾成功地將同一個應用程序部署到App Engine (幾個月前,在另一個項目和該應用程序的舊版本中)並且它正在連接到Cloud SQL 據我說,在這兩種情況下,我都使用了相同的連接代碼。

擴展錯誤

sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not connect to server: 
Connection refused
Is the server running locally and accepting
connections on Unix domain socket
 "/cloudsql/<project_id>:southamerica-east1:test-instance/.s.PGSQL.5432"?

Background on this error at: https://sqlalche.me/e/14/e3q8)

筆記/我嘗試過的事情

  • 我可以從本地pgAdmin 4連接到Cloud SQL數據庫。
  • 如果我刪除應用程序的數據庫部分,應用程序會正確部署到App Engine
  • 我嘗試使用psycopg2而不是psycopg2-binary
  • 我試過重啟/關閉雲 sql 實例。
  • 我嘗試過使用不同的適配器,一個異步的(雖然我不是這樣,因為正如我之前提到的,我能夠在使用psycopg2之前進行部署)

概括

問題是我禁用了 Cloud SQL Admin API。 我激活了它,它起作用了。

細節

我只是通過本地控制台查看日志,使用命令gcloud app logs tail -s default並且我能夠看到的唯一錯誤是我在原始問題中發布的錯誤。

但是,按照@kurtisvg 的建議,我直接通過 GCP 控制台檢查了 App Engine 日志,然后出現了另一個錯誤。 錯誤是Error 403: Cloud SQL Admin API has not been used in project before or it is disabled. . 我按照說明進行操作,並且成功了。

@kurtisvg 再次感謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM