使用的Cassandra版本是2.0。随着Cassandra Helenus Driver,TTL和TS回归似乎并不正确。不知道我在这里缺少什么。
这是npm安装信息:
cassandra-client@0.14.7 node_modules/cassandra-client
├── node-uuid@1.4.1
├── async@0.2.9
├── thrift@0.9.0
└── whiskey@0.8.4 (gex@0.0.1, sprintf@0.1.2, rimraf@1.0.1, simplesets@1.1.6, terminal@0.1.3, logmagic@0.1.4, underscore@1.5.2, magic-templates@0.1.1, istanbul@0.1.44)
以下是示例
cqlsh:mykeyspace> INSERT INTO users (user_id, fname, lname) VALUES (1749, 'john', 'smith5') using TTL 3000;
cqlsh:mykeyspace> SELECT writetime(fname) FROM users;
writetime(fname)
------------------
1379455363318000
1379280881300000
1379280882172000
1379460416737000
(4 rows)
cqlsh:mykeyspace> SELECT ttl(fname) FROM users;
ttl(fname)
------------
null
null
null
2992
(4 rows)
Node.js Snippet
var helenus = require ('helenus');
var conn = new helenus.ConnectionPool({
host : 'localhost:9160',
keyspace : 'mykeyspace',
user : '',
password : '',
timeout : 3000,
cqlVersion : '3.0.0'
//cqlVersion : '3.0.0' // specify this if you're using Cassandra 1.1 and want to use CQL 3
});
conn.on('error', function(err){
console.error(err.name, err.message);
});
conn.connect(function(err, keyspace){
if(err){
throw(err);
} else {
conn.cql("SELECT fname FROM users", function(err, results){
console.log(err, results);
console.log('Here we are!');
results.forEach(function(row){
//all row of result
row.forEach(function(name,value,ts,ttl){
//all column of row
console.log(name,value,ts,ttl);
});
});
});
}
});
这是输出
Here we are!
fname john Wed Dec 31 1969 16:00:00 GMT-0800 (PST) null
fname john Wed Dec 31 1969 16:00:00 GMT-0800 (PST) null
fname john Wed Dec 31 1969 16:00:00 GMT-0800 (PST) null
fname john Wed Dec 31 1969 16:00:00 GMT-0800 (PST) null
答案 0 :(得分:1)
我在Helenus project page上阅读的所有内容都让我觉得它与Apache Cassandra 2.0 / CQL3不兼容
举例说明:
自0.14.1起,客户端支持Apache Cassandra 1.2.x 在CQL 2兼容模式下。
默认情况下,Cassandra 1.2.x使用CQL 3,因此您需要转向 通过'cql_version'传递CQL 2兼容模式: Connection / PooledConnection的'2.0.0'属性 选项对象中的构造函数。
和
如果你使用Cassandra 1.2.x附带的cqlsh或者 更新版本的cqlsh,默认为您需要的CQL 3 将-2参数传递给它,否则客户端将无法执行 阅读列族定义(#67)。