मैं CREATE INDEX ON chat.user_conversation (keys(conversations)) के साथ 'बातचीत' कुंजियों पर अनुक्रमणिका बनाने का प्रयास कर रहा हूं, लेकिन मुझे त्रुटि का सामना करना पड़ रहा है ServerError: java.lang.RuntimeException: java.util.concurrent.ExecutionException: org.apache.cassandra.exceptions.ConfigurationException: Column family ID mismatch (found 6de73fd0-c3ec-11e8-b098-f58bd8d3766a; expected 6c971920-c3ec-11e8-b098-f58bd8d3766a)

मैंने टेबल को nodetool flush कमांड और रीक्रिएटेड टेबल के साथ फ्लश करने की कोशिश की लेकिन परिणाम नहीं बदला। यह मेरी तालिका:

CREATE TABLE chat.user_conversation (
    username text,
    created_at timestamp,
    conversations map<text, uuid>,
    last_activity timestamp,
    PRIMARY KEY (username, created_at)
) WITH CLUSTERING ORDER BY (created_at DESC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99PERCENTILE';

मैंने अन्य क्षेत्रों के लिए भी बनाने की कोशिश की लेकिन उसी त्रुटि का सामना करना पड़ा।

कैसेंड्रा का उपयोग करना 3.11.3

2
ayZagen 29 सितंबर 2018, 16:43

2 जवाब

सबसे बढ़िया उत्तर

भविष्य के काम करने वालों के लिए, समस्या कैसेंड्रा के विभिन्न संस्करणों का उपयोग कर रही थी। मैंने उसी डॉक मशीन पर ScyllaDB की कोशिश की थी। ScyllaDB कैसेंड्रा v3.0.8 का उपयोग कर रहा था और मैंने उस पर समान तालिकाएँ बनाई थीं। कैसंड्रा को उसी डॉकर इंस्टेंस पर स्थापित करने के बाद मुझे इस त्रुटि का सामना करना पड़ा। Scylladb और cassandra docker इमेज दोनों समान वॉल्यूम पथ का उपयोग करते हैं।

2
ayZagen 3 अक्टूबर 2018, 01:07

इस त्रुटि का अर्थ है कि आपने किसी तरह एक ही तालिका को दो अलग-अलग आईडी के साथ बनाया है - संभवतः क्योंकि आपने तालिका को प्रोग्रामिक रूप से बनाया है और वे दौड़ गए हैं। यह एक ज्ञात सीमा है, जिसे संबोधित किया जा रहा है, लेकिन संक्षिप्त संस्करण यह है कि यदि कोई मौका है तो आपको प्रोग्रामिक रूप से टेबल नहीं बनाना चाहिए (दो ऐप सर्वर को एक ही समय में ऐसा न करने दें)।

यहां रिकवरी आमतौर पर मुश्किल होती है। यदि यह एक नई तालिका है, तो आप शायद इसे हटाना चाहते हैं और पुनः प्रयास करना चाहते हैं (और एक अच्छा मौका है कि आपको इसे पढ़ने में कठिन समय लगेगा)। यदि आपके पास डेटा है जिसकी आप परवाह करते हैं, तो आपको सभी सीएफआईडी मिलान प्राप्त करने की आवश्यकता है, जो हासिल करना बहुत आसान नहीं है, और आपके कैसेंड्रा संस्करण के आधार पर भिन्न होता है (आपको निर्देशिकाओं का नाम बदलने और स्कीमा तालिकाओं को मैन्युअल रूप से संशोधित करने की आवश्यकता हो सकती है - यह नाजुक है और प्रवण त्रुटि)।

2
Jeff Jirsa 30 सितंबर 2018, 07:21