我有一个问题插入查询在红宝石与卡桑德拉,
这是我的表:
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
)
我得到了这个错误:
/home/florian/。rvm/gems/ruby-2 . 1 . 4/gems/Cassandra-driver-1 . 0 . 0 . RC . 1/lib/Cassandra/protocol/cql _ byte _ buffer . Rb:275:in < code > to _ s ':来自/home/florian/的参数数目错误(1对0) (ArgumentError)。rvm/gems/ruby-2 . 1 . 4/gems/Cassandra-driver-1 . 0 . 0 . RC . 1/lib/Cassandra/protocol/cql _ byte _ buffer . Rb:275:in append _ decimal ' from/home/Florian/。rvm/gems/ruby-2 . 1 . 4/gems/Cassandra-driver-1 . 0 . 0 . RC . 1/lib/Cassandra/protocol/type _ converter . Rb:287:in < code > decimal _ to _ bytes ' from/home/Florian/。rvm/gems/ruby-2 . 1 . 4/gems/Cassandra-driver-1 . 0 . 0 . RC . 1/lib/Cassandra/protocol/type _ converter . Rb:85:in 调用' from /home/florian/。rvm/gems/ruby-2 . 1 . 4/gems/Cassandra-driver-1 . 0 . 0 . RC . 1/lib/Cassandra/protocol/type _ converter . Rb:85:in < code > to _ bytes ' from/home/Florian/。rvm/gems/ruby-2 . 1 . 4/gems/Cassandra-driver-1 . 0 . 0 . RC . 1/lib/Cassandra/protocol/requests/execute _ request . Rb:93:in encode _ values ' from/home/Florian/中的块。rvm/gems/ruby-2 . 1 . 4/gems/Cassandra-driver-1 . 0 . 0 . RC . 1/lib/Cassandra/protocol/requests/execute _ request . Rb:92:in < code > each ' from/home/Florian/。rvm/gems/ruby-2 . 1 . 4/gems/Cassandra-driver-1 . 0 . 0 . RC . 1/lib/Cassandra/protocol/requests/execute _ request . Rb:92:in each _ with _ index ' from/home/Florian/。rvm/gems/ruby-2 . 1 . 4/gems/Cassandra-driver-1 . 0 . 0 . RC . 1/lib/Cassandra/protocol/requests/execute _ request . Rb:92:in < code > encode _ values ' from/home/Florian/。rvm/gems/ruby-2 . 1 . 4/gems/Cassandra-driver-1 . 0 . 0 . RC . 1/lib/Cassandra/protocol/requests/execute _ request . Rb:39:in initialize ' from/home/Florian/。rvm/gems/ruby-2 . 1 . 4/gems/Cassandra-driver-1 . 0 . 0 . RC . 1/lib/Cassandra/cluster/client . Rb:190:in < code > new ' from/home/Florian/。rvm/gems/ruby-2 . 1 . 4/gems/Cassandra-driver-1 . 0 . 0 . RC . 1/lib/Cassandra/cluster/client . Rb:190:in execute ' from/home/Florian/。rvm/gems/ruby-2 . 1 . 4/gems/Cassandra-driver-1 . 0 . 0 . RC . 1/lib/Cassandra/session . Rb:81:in < code > execute _ async ' from/home/Florian/。rvm/gems/ruby-2 . 1 . 4/gems/Cassandra-driver-1 . 0 . 0 . RC . 1/lib/Cassandra/session . Rb:103:in execute ' from/home/Florian/Projects/Hadoop-ticket-server/import _ Cassandra . Rb:60:in < code >块(3层)in
你知道我的问题吗?谢谢你
问题是浮点数。
float中的Ruby在cassandra中被解释为double或float。要在cassandra中输入decimal,我们必须在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
)
问题内容: 我正在尝试使用jdbc将一些数据插入到我的数据库中。我正在使用正确的表,数据库名称和参数。一切检查完毕。 代码 这是当我尝试运行它时给我的错误: 问题答案: 您在此行中有语法错误: 您缺少values子句的右括号。
问题内容: SQL查询: MySQL说: 即使在行1062处没有条目,它也会显示此重复的条目错误。(ID是主键,并且是unique(ID_Category,Keyword))。你能帮我吗?… 问题答案: 您的数据库中已经有一行带有值“ 18”和“免费邮件”的行。由于存在唯一性约束,因此不能有两个这样的行。您有一些选择: 删除原始行,然后再次尝试插入:。 删除唯一性约束以允许两行同时存在。 使用忽略
问题内容: 插入数据库时出现错误。 代码: 忽略dbquery,与mysql_query完全一样。 我收到的错误是: 不知道为什么会引发此错误! 问题答案: 教一个人如何钓鱼。 如果查询失败,那么您应该做的第一件事就是回显您要发送的查询: 通常,最终查询到底出了什么问题,这是很明显的。要特别注意查询中的动态内容,通常要注意MySQL抱怨的区域。 如果看起来还可以,那么您会寻找可能需要转义的单词
我在尝试将记录插入数据库时遇到错误。 错误如下: 守则: 数据库:
环境: > java 7 Cassandra 2.1.2在Windows 8.1的一个简单节点上运行在我的本地开发工作站上 驱动核心 运行环境: apache karaf 2.3.8 我试图通过在一个由简单类型(坐标为x和y)定义的列中提供一个json来插入一行。 我构建这个java语句: 在执行此操作时: 我有以下错误(完整堆栈跟踪在此消息末尾): [在下面的CQL语句中,我对列名进行了匿名化,
问题内容: 我正在使用PHP。 请问什么是将新记录插入具有唯一字段的数据库的正确方法。我正在批量插入很多记录,我只想插入新记录,并且我不想重复条目有任何错误。 有没有唯一方法可以首先进行SELECT并查看条目是否在INSERT之前已经存在-并且仅在SELECT不返回任何记录时才插入INSERT?我希望不是。 我想以某种方式告诉MySQL忽略这些插入而没有任何错误。 谢谢 问题答案: 如果在重复记录