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