2015-03-10 3 views
0

Вот странный.Cassandra: Отсутствует столбец в результатах запроса

У меня есть стол Кассандры, назовите его «тест». Он имеет несколько столбцов. Они запрашиваются с помощью драйвера Java, с простым «select * from test where uuid = foo».

Это работает локально, все столбцы возвращаются.

В производственной среде, однако, один столбец отбрасывается, несмотря на то, что в нем есть данные (который показывает, что столбец можно записать в).

Я посмотрел на ColumnDefinitions для объекта Row, и он действительно не содержит соответствующий столбец.

Почему? У любого даже есть работоспособная теория?

+0

вы используете PreparedStatement для вашего 'SELECT *' запрос? Если схема таблицы изменяется после того, как вы определили свой подготовленный оператор, ее необходимо будет представить. См. Http://stackoverflow.com/questions/28777840/cassandra-nodejs-datastax-driver-dont-return-newly-added-columns-via-prepared-s/28778097#28778097 –

+0

Эй, мистер Толберт? Когда-нибудь его целовал парень? – mtyson

+0

@ AndyTolbert: Серьезно, это было потрясающее предложение, и все. Большое спасибо. Пожалуйста, предложите в качестве ответа, чтобы я мог отметить его! – mtyson

ответ

2

Если вы используете 'select *' в качестве PreparedStatement, вам нужно будет переформулировать ваше утверждение, если ваша схема изменится (добавлены или удалены столбцы). Cassandra не обновляет готовый кэш инструкции при изменении схемы до 2.1.3, поэтому это не будет работать в предыдущих версиях.

См: Cassandra nodejs DataStax driver don't return newly added columns via prepared statement execution

Смежные вопросы