Cassandra:“未设置模型键空间”和“注册表中不存在连接名称”错误

问题描述 投票:0回答:1

我最近升级到 Django 4.2,并面临 Cassandra 集成问题。最初,我在尝试生成查询时遇到以下错误:

cassandra.cqlengine.CQLEngineException: Model keyspace is not set and no default is available. Set model keyspace or setup connection before attempting to generate a query.

尽管在

settings.py
中指定了模型键空间,仍会引发此错误。作为尝试的修复,我在模型中明确设置了键空间,如下所示:

__keyspace__ = "my_keyspace"

但是,这导致了一组与注册表中不存在的连接名称相关的新错误:

Connection name '<object object at 0x7f4fb00d67a0>' doesn't exist in the registry.

此问题在多个模型和查询中仍然存在。以下是有关我的设置的一些相关详细信息:

  • Python 3.10
  • django-cassandra-engine 1.7.0
  • 在 Docker 内部运行;从 Docker 内部到 Cassandra 的连接已得到验证

这是一个完整的错误。

sessions, disconnected = fetch_sessions_list(ux_vms)
  File "/code/wtools2/apps/analytics/views.py", line 1652, in fetch_sessions_list
    metrics_session.extend(list(sessions_db))
  File "/usr/local/lib/python3.10/site-packages/cassandra/cqlengine/query.py", line 437, in __len__
    self._execute_query()
  File "/usr/local/lib/python3.10/site-packages/cassandra/cqlengine/query.py", line 472, in _execute_query
    self._result_generator = (i for i in self._execute(self._select_query()))
  File "/usr/local/lib/python3.10/site-packages/cassandra/cqlengine/query.py", line 456, in _select_query
    self.column_family_name,
  File "/usr/local/lib/python3.10/site-packages/cassandra/cqlengine/query.py", line 397, in column_family_name
    return self.model.column_family_name()
  File "/usr/local/lib/python3.10/site-packages/cassandra/cqlengine/models.py", line 559, in column_family_name
    raise CQLEngineException("Model keyspace is not set and no default is available. Set model keyspace or setup connection before attempting to generate a query.")

cassandra.cqlengine.CQLEngineException: Model keyspace is not set and no default is available. Set model keyspace or setup connection before attempting to generate a query.
raise CQLEngineException("Model keyspace is not set and no default is available. Set model keyspace or setup connection before attempting to generate a query.")
cassandra.cqlengine.CQLEngineException: Model keyspace is not set and no default is available. Set model keyspace or setup connection before attempting to generate a query.

是否有人遇到过类似的问题或对在使用 Cassandra 的 Django 4.2 环境中解决这些错误有见解?任何帮助或指导将不胜感激。

python-3.x django cassandra
1个回答
0
投票

我认为在

sync_table
的情况下也遇到了同样的错误。我正在使用 datastax 数据库。我希望这有帮助,我已经检查了每个步骤。

from cassandra.cluster import Cluster
from cassandra.cqlengine import connection

#change the below line to connect to docker cassandra instances
cluster = Cluster(['192.168.0.1', '192.168.0.2'])
#check 
print(cluster.metadata.keyspaces)

session = cluster.connect()
#check
keyspaces_from_session = session.execute(query = "SELECT keyspace_name FROM system_schema.keyspaces;")
keyspaces_from_session = [keyspace.keyspace_name for keyspace in keyspaces_from_session]
print(keyspaces_from_session)

connection.set_session(session)
#check
keyspaces_from_connection = connection.execute(query = "SELECT keyspace_name FROM system_schema.keyspaces;")
keyspaces_from_connection = [keyspace['keyspace_name'] for keyspace in keyspaces_from_connection]
print(keyspaces_from_connection)

#remaining commands ..
© www.soinside.com 2019 - 2024. All rights reserved.