CQL Cassandra Отсутствует обязательный идентификатор первичного ключа

Я пытаюсь создать запись, и я получаю эту ошибку.

[40] pry(main)> a = TopicPost.new(topic_id: "professional_safety", pub_date: "5a612420-21e2-11e6-bdf4-0800200c9a66")
=> #<TopicPost topic_id: "professional_safety", pub_date: 5a612420-21e2-11e6-bdf4-0800200c9a66, publisher: nil, author_id: nil, id: nil, message: nil, name: nil, link: nil, shared_count: nil, prospect_score: nil, indico_score: nil, keywords: #<Set: {}>, updated_at: nil, created_at: nil, profile_image: nil, bio: nil, account_link: nil, twitter_handle: nil, favorite_count: nil, followers_count: nil, klout_score: nil, has_engagements: nil, is_retweet: nil, engaged_influencer_ids: #<Set: {}>, urls: #<Set: {}>, images: #<Set: {}>, feed_name: nil, feed_url: nil, description: nil, title: nil, batch_id: nil, score: nil, fcm: nil, scorelog: {}>
[41] pry(main)> a.save
Cql::QueryError: Missing mandatory PRIMARY KEY part id
from /home/blau08/.rvm/gems/ruby-2.1.2/gems/cql-rb-2.0.4/lib/cql/client/client.rb:545:in `execute'
[42] pry(main)> 

1 ответ

Решение

Как выглядит структура вашей таблицы?

Я предполагаю, что у вас есть составной первичный ключ, и id столбец является частью этого. ПЕРВИЧНЫЕ КЛЮЧИ Кассандры уникальны, поэтому вы должны предоставить полный ключ для upsert.

Рассматривая ваш код, в частности закомментированную часть, я вижу подсказку:

[40] pry(main)> a = TopicPost.new(topic_id: "professional_safety", pub_date: "5a612420-21e2-11e6-bdf4-0800200c9a66")
=> #<TopicPost topic_id: "professional_safety", pub_date: 5a612420-21e2-11e6-bdf4-0800200c9a66, publisher: nil, author_id: nil, id: nil, message: nil, name: nil, link: nil, shared_count: nil, prospect_score: nil, indico_score: nil, keywords: #<Set: {}>, updated_at: nil, created_at: nil, profile_image: nil, bio: nil, account_link: nil, twitter_handle: nil, favorite_count: nil, followers_count: nil, klout_score: nil, has_engagements: nil, is_retweet: nil, engaged_influencer_ids: #<Set: {}>, urls: #<Set: {}>, images: #<Set: {}>, feed_name: nil, feed_url: nil, description: nil, title: nil, batch_id: nil, score: nil, fcm: nil, scorelog: {}>

Вы не предоставляете значение для id в вашем TopicPost.new заявление, но я вижу это в вашем комментарии:

author_id: nil, id: nil, message: nil

Попробуйте указать значение для id, Конечно, не видя определения PRIMARY KEY, могут быть другие обязательные столбцы, для которых вы не указали значение, но начните с них.

Другие вопросы по тегам