0

試圖改變卡桑德拉時碰到了以下問題: 我改變表直截了當:更改列家族在卡桑德拉在多節點拓撲

ALTER TABLE posts ADD is_black BOOLEAN; 

在單節點環境,在EC2服務器和localhost下都可以正常工作 - 選擇,刪除等等。

當我在3節點的集羣上進行更改時 - 東西越來越大。 當我執行

select().all().from(tableName).where.. 

,我發現了以下異常:

java.lang.IllegalArgumentException: is_black is not a column defined in this metadata 

    at com.datastax.driver.core.ColumnDefinitions.getAllIdx(ColumnDefinitions.java:273) 

    at com.datastax.driver.core.ColumnDefinitions.getFirstIdx(ColumnDefinitions.java:279) 

    at com.datastax.driver.core.ArrayBackedRow.getIndexOf(ArrayBackedRow.java:69) 

    at com.datastax.driver.core.AbstractGettableData.getString(AbstractGettableData.java:137) 

顯然我不是誰的具有這種行爲只有一個: reference

PS - 創造降由於我無法刪除表中包含的數據,因此keyspace不是我的可能性。

+0

你可以在所有節點上通過cqlsh查詢該列嗎? – Aaron

+0

@ BryceAtNetwork23是的,我可以在每個節點上處理每個數據的變換。 – Nativ

+0

它可能與datastax驅動程序的緩存的元數據有關。您可能會嘗試重新啓動應用程序服務器以清除緩存? – kris433

回答

0

的缺陷得到了解決:-)

我的問題是,DataStax維持包含每個節點的配置內存緩存,當我修改表這個緩存沒有更新,因爲我用cqlsh,而不是自己的SDK。

重新啓動所有節點後,內存緩存被刪除,並且錯誤得到解決。

+0

您正在使用哪個版本的驅動程序?即使第三方(如cqlsh)正在更改架構,它也應該刷新其元數據(請參閱http://docs.datastax.com/en/developer/java-driver/3.1/manual/metadata/#刷新)。我在2.1驅動程序中遇到了類似的問題。 – Tom