テーブル・スキーマの衝突の修正
スキーマの衝突の問題の修正方法。
動的スキーマの作成または更新は、スキーマの衝突の原因となり、エラーを引き起こす可能性があります。
手順
-
スキーマが確実に一致するように、すべてのノードでローリング再起動を実行します。すべてのノードで
nodetool describecluster
を実行します。スキーマ・バージョンは1つだけであることを確認します。 -
各ノードで、修正するテーブルの
data
ディレクトリーを確認します。data
ディレクトリーのデフォルトの位置は/var/lib/cassandra/data
です。テーブルのディレクトリーが1つのみの場合は、次のノードに移動してこの手順を繰り返します。テーブルのディレクトリーが複数ある場合は、次の手順に進みます。注: 2つのディレクトリーがある場合は、古いディレクトリーに更新前の古いテーブル・データが格納されます。新しいディレクトリーには、更新後の新しいデータが格納されます。 -
system_schema.tables
でどのid
(カラム・ファミリーID)が最新のテーブルIDであるかを特定します。cqlsh -e "SELECT * FROM system_schema.tables" | grep <tablename>
- 古いテーブルから新しいテーブルのディレクトリーにデータを移動し、古いディレクトリーを削除します。必要に応じてこの手順を繰り返します。
- nodetool refreshを実行します。