2015-09-25 1 views
0

У меня есть следующий класс в Python, и я с помощью cqlengine в качестве объекта картографа для Кассандры DB,Невозможно создать более двух таблиц с использованием sync_table() в cqlengine

class Company(Model): 
    id = columns.Integer(index=True, primary_key=True) 
    company_name = columns.Text(required=False) 
    created_at = columns.DateTime(default=datetime.now) 

class Social(Model): 
    id = columns.Integer(index=True, primary_key=True) 
    name = columns.Text(required=False) 

class UserCompany(Model): 
    id = columns.Integer(index=True, primary_key=True) 
    user_id = columns.Integer(required=True) 
    company_id = columns.Integer(required=True) 

array_of_tables=[UserCompany, Company, Social] 
    for table in array_of_tables: 
     sync_table(table) 

Проблема: я не в состоянии создать более две таблицы в кассандре при выполнении кода.

Erorr сообщение:

File "test.py", line 109, in <module> 
    create_tables() 
    File "test.py", line 68, in create_tables 
    sync_table(table) 
    File "/usr/lib64/python2.6/site-packages/cassandra/cqlengine/management.py", line 259, in sync_table 
    execute(qs) 
    File "/usr/lib64/python2.6/site-packages/cassandra/cqlengine/connection.py", line 171, in execute 
    result = session.execute(query, params, timeout=timeout) 
    File "cassandra/cluster.py", line 1602, in cassandra.cluster.Session.execute (cassandra/cluster.c:27334) 
    File "cassandra/cluster.py", line 3347, in cassandra.cluster.ResponseFuture.result (cassandra/cluster.c:65206) 
cassandra.InvalidRequest: code=2200 [Invalid query] message="Cannot create secondary index on partition key column id" 

нужна помощь в решении этого вопроса.

+0

возможно дубликат [cassandra.InvalidRequest: код = 2200 \ [Неверный запрос \] = сообщение "Невозможно создать вторичный индекс раздела идентификатор ключа столбца"] (http://stackoverflow.com/questions/32791300/ Cassandra-invalidrequest-код-2200-недействителен-запрос-сообщение, не может создать-Secon) – mbeacom

ответ

0

Указатель индекса для основного столбца не допускается. Я просто удалил это из кода, и он сработал. Он должен выглядеть следующим образом. Здесь я просто использовал UUID вместо целого числа, что в любом случае не имеет отношения к реальной проблеме.

class Company(Model): 
    id = columns.UUID(default=uuid.uuid1(), primary_key=True)) 
    company_name = columns.Text(required=False) 
    created_at = columns.DateTime(default=datetime.now) 

class Social(Model): 
    id = columns.UUID(default=uuid.uuid1(), primary_key=True) 
    name = columns.Text(required=False) 

class UserCompany(Model): 
    id = columns.UUID(default=uuid.uuid1(), primary_key=True) 
    user_id = columns.Integer(required=True) 
    company_id = columns.Integer(required=True) 

array_of_tables=[UserCompany, Company, Social] 
    for table in array_of_tables: 
     sync_table(table)