Node Cassandra驱动程序只挂起执行()

时间:2016-09-05 18:55:47

标签: node.js cassandra

var cql = require('node-cassandra-cql');
var client = new cql.Client({hosts: ['*.*.*.*'], keyspace: '*', 
                             username:'*', password: '*'});

console.log('connected to ' , client);
console.log('Querying....');

client.execute('select * from example where field1=?', [1],
  function(err, result) {
    console.log('inside', result);

    if (err)
        console.log('execute failed',err);
    else
        console.log('got chat ' + result.rows[0].field1);

    client.shutdown();
  }
);

我正在使用此代码,不会调用execute()回调函数。为了测试我使用了不正确的IP地址,它立即响应并且此行console.log('执行失败',错误)记录下面的内容。

execute failed { [PoolConnectionError]
  name: 'PoolConnectionError',
  info: 'Represents a error while trying to connect the pool, all the connections failed.',
  individualErrors:
   [ { Error: getaddrinfo ENOTFOUND 
         at errnoException (dns.js:28:10)
         at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:79:26)
       code: 'ENOTFOUND',
       errno: 'ENOTFOUND',
       syscall: 'getaddrinfo',
       hostname: '*.*.*.*'
       host: '*.*.*.*'
       port: 9042 } ] }

如果使用正确的IP地址,可能没有任何反应可能因为新的cql.Client内部调用连接(异步)甚至连接之前是否尝试执行?所有这些都完美适用于CQLSH,我的服务器位于AWS美国西海岸。

欢迎任何投入。

1 个答案:

答案 0 :(得分:2)

您正在使用旧版Cassandra驱动程序node-cassandra-cql,而project readme states已不再维护:

  

node-cassandra-cql已经从社区驱动程序毕业到了   官方Datastax Node.js Driver for Apache Cassandra的基础。

     

此存储库中将不再有开发。我鼓励   每个人都可以尽快开始迁移到新的驱动程序,这是   有一些很棒的新功能,你应该尝试,以及一个   为预准备语句改进了cql到javascript类型的映射。

改为使用DataStax Node.js driver

npm install cassandra-driver --save