[英]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.