2016-12-26 6 views
0

私はcassandra cqlengineチュートリアルに従いました。Cassandra cqlengineはモデルスキーマの変更を反映していません - 移行

import uuid 
from cassandra.cqlengine import columns 
from cassandra.cqlengine import connection 
from datetime import datetime 
from cassandra.cqlengine.management import sync_table 
from cassandra.cqlengine.models import Model 

class ExampleModel(Model): 
    example_id  = columns.UUID(primary_key=True, default=uuid.uuid4) 
    example_type = columns.Integer(index=True) 
    created_at  = columns.DateTime() 
    description  = columns.Text(required=False) 

connection.setup(['127.0.0.1'], "cqlengine", protocol_version=3) 
sync_table(ExampleModel) 

ただしiは整数型にテキスト型からフィールドの説明を変更し、sync_tableをすれば、私はカサンドラのテーブルスキーマに反映された変更を参照してくださいいけないように私は、モデルのフィールドを変更したとき。どのようにこれを解決することができますか?

答えて

0

二つのことが間違ってここにあります

  1. 概念的には、スキーマの移行を試みています。 Python用のApache Cassandraドライバは、まだ正式にスキーマの移行をサポートしていません。 this ticketのクイックルックは、私の言いたいことをあなたに説明します。

  2. カサンドラのデータ型変換をデータモデルにCQLに従う必要があります(あなたがあなたのテーブルに新しい列を追加することができますし、sync_tableは動作しますし、あなたの新しいスキーマが反映されますが、それは厳密にALTER操作を話していないことに注意してください。)型互換性は、hereと定義されています。 IntegerからFloatに変換しようとすると互換性がありません。

互換性のない種類のスキーマを更新する唯一の解決策は、hereです。私は同じで別の議論を開きましたhere

関連する問題