我正在嘗試建立與 Heroku Postgres 資料庫的連接并收到此錯誤:
psycopg2.OperationalError:
FATAL: password authentication failed for user "hdyarfoicbluoo"
FATAL: no pg_hba.conf entry for host "95.92.208.27", user "hdyarfoicbluoo", database "d7jcaupbs6m4ud", no encryption
我的代碼是:
import psycopg2
conn = psycopg2.connect( dbname=DB_NAME, user=DB_USER, password=DB_PASS, host=DB_HOST)
conn.close()
我期待收到答復。
我嘗試使用DATABASE_URL但不作業,要么:
conn = psycopg2.connect(DATABASE_URL, sslmode='require')
Traceback (most recent call last): File "/home/aluno-di/Desktop/dbaccess.py", line 9, in <module>
DATABASE_URL = os.environ['postgres://hdyarfoicbluoo:[email protected]:5432/d7jcaupbs6m4ud'] File "/usr/lib/python3.8/os.py", line 675, in __getitem__ raise KeyError(key) from None KeyError: 'postgres://hdyarfoicbluoo:[email protected]:5432/d7jcaupbs6m4ud'
uj5u.com熱心網友回復:
在第一種情況下,您缺少sslmode論點:
conn = psycopg2.connect(
dbname=DB_NAME,
user=DB_USER,
password=DB_PASS,
host=DB_HOST,
sslmode="require", # <-- Here
)
但最好使用DATABASE_URL環境變數,正如您在第二個示例中所做的那樣。Heroku 可能隨時更改您的資料庫憑據,并且始終使用此變數是確保您的應用程式繼續作業的最佳方式。
將連接字串存盤在環境變數中的全部意義在于您不必將它們直接放在代碼中。使用環境變數的名稱來檢索其值。
像這樣的東西應該作業:
DATABASE_URL = os.environ["DATABASE_URL"]
conn = psycopg2.connect(DATABASE_URL)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/451124.html
標籤:heroku
