2015-09-25 92 views
0

两个以上使用表sync_table()我有蟒蛇下面的类和我使用cqlengine作为卡桑德拉DB对象映射,无法创建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) 

问题:我不能够创造超过在执行代码时在cassandra中有两个表。

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 \ [查询无效\]消息= “无法创建分区键列ID二级索引”](http://stackoverflow.com/questions/32791300/卡桑德拉-invalidrequest码-2200-无效-查询消息不能创建-塞康) – 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)