[英]Missing cluster identifier Error when connecting to serverless cockroachdb using the Python SQLmodel library
我有一個 python 應用程序,它使用 SQLmodel 庫作為 ORM 包裝器。 在用 sqlite3 成功創建數據庫和多個表后,我喜歡切換到 cockroach db。 因此,我更改了 create_engine 命令中的連接字符串。 我在這里按照有關如何連接到蟑螂數據庫的說明 - https://www.cockroachlabs.com/docs/v22.2/connect-to-the-database.html?filters=python&filters=sqlalchemy
我的理解是 SQLmodel 完全支持 SQLAlchemy 個連接。
但是當我運行 create_engine 命令時..
engine = create_engine(os.environ["DB_CONNECTION"], echo=True)
我收到以下錯誤:
Exception has occurred: OperationalError
(psycopg2.OperationalError) FATAL: codeParamsRoutingFailed: missing cluster identifier
(Background on this error at: https://sqlalche.me/e/14/e3q8)
psycopg2.OperationalError: FATAL: codeParamsRoutingFailed: missing cluster identifier
The above exception was the direct cause of the following exception:
File "/workspace/app/main.py", line 8, in <module>
SQLModel.metadata.create_all(engine)
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) FATAL: codeParamsRoutingFailed: missing cluster identifier
(Background on this error at: https://sqlalche.me/e/14/e3q8)
環境變量在VSCode devcontainer.json文件中設置
"containerEnv": {
"DB_CONNECTION": "cockroachdb://wg:<removed-password>@cheeky-panther-6202.8nj.cockroachlabs.cloud:26257/wartgeld?sslmode=verify-full"
}
我按照指示下載了證書。
curl --create-dirs -o $HOME/.postgresql/root.crt -O https://cockroachlabs.cloud/clusters/47771648-29f6-4b5d-b684-aeb905732cd7/cert
至於包我已經根據這個說明安裝了所需的包 - https://github.com/cockroachdb/sqlalchemy-cockroachdb
...
psycopg2-binary 2.9.5
pydantic 1.10.2
PyYAML 6.0
requests 2.28.1
setuptools 65.5.0
SQLAlchemy 1.4.41
sqlalchemy-cockroachdb 1.4.4
sqlalchemy2-stubs 0.0.2a29
sqlmodel 0.0.8
typing_extensions 4.4.0
urllib3 1.26.13
uvicorn 0.20.0
wheel 0.38.4
我現在不確定連接字符串是否正確,盡管我直接從 cockroachdb 管理界面復制粘貼了它。
集群標識符可以在參數(主機)下找到。
YOUR-IDENTIFIER-521 .h4f.cockroachlabs.cloud
YOUR-IDENTIFIER-521 是您的集群標識符。
在連接字符串中,這必須在數據庫名稱之前使用,例如 YOUR-IDENTIFIER-521.dbname。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.