Cassandra Datastax Ruby 挿入エラー
概要
カサンドラを使用したRubyでの挿入クエリに問題があります。
これは私のテーブルです:
CREATE TABLE testkeyspace.ticket (
id int,
uid text,
annule boolean,
avoir decimal,
caisse int,
clotureid int,
couverts decimal,
creation_iso timestamp,
modif_iso timestamp,
montantencaisse decimal,
montantttc decimal,
nb_articles int,
numero int,
remise decimal,
remise_montant decimal,
remise_type text,
remise_valeur decimal,
rendu decimal,
stats_iso timestamp,
PRIMARY KEY (id, uid)
)
Rubyではprepareステートメントを作成しました。
insert_table_ticket = session.prepare("INSERT INTO ticket(id, uid, annule, avoir, caisse, clotureid, couverts,creation_iso, modif_iso, montantencaisse, montantttc, nb_articles, numero, remise,remise_montant, remise_type, remise_valeur, rendu,stats_iso) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)")
そして、私はテストのためにこれらの値を入れました:
session.execute(insert_table_ticket,
1,
"test",
true,
1.1,
1,
1,
1.0,
1415350203,
1415350203,
1.1,
1.1,
1,
1,
1.1,
1.1,
"tests",
1.1,
1.1,
1415350203
)
このエラーが発生しました:
私の問題について何か考えがありましたか?ありがとうございます
解決策
問題は浮動小数点数にありました。
float 内の Ruby は、cassandra では double または float として解釈されます。 cassandra に 10 進数を入れるには、Ruby に BigDecimal を入れる必要があります。
ソース: “http://datastax.github.io/ruby-driver/features/basics/”
解決 :
session.execute(insert_table_ticket,
1,
"test",
true,
BigDecimal.new('1.1'),
1,
1,
BigDecimal.new('1.0'),
1415350203,
1415350203,
BigDecimal.new('1.1'),
BigDecimal.new('1.1'),
1,
1,
BigDecimal.new('1.1'),
BigDecimal.new('1.1'),
"tests",
BigDecimal.new('1.1'),
BigDecimal.new('1.1'),
1415350203
)