2015-09-25 91 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)