2016-09-05 4 views
0
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'、err)は以下の行を記録します。新しいcql.Clientが内部接続(非同期)を呼び出しますので、右のIPアドレス何も5月に発生した場合ノードCassandraドライバがちょうどハングします。

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 } ] } 

でも接続する前にしようとしている実行作られるのですか?すべてCQLSHで完璧に動作します。私のサーバは、米国西海岸のAWSにあります。

任意の入力を歓迎します。

+0

'client.connect([コールバック])'と、ドキュメントで推奨されているようにあなたは、 'プールを温める' 場合はどう? – raina77ow

+0

docは、内部的に呼び出されるので、connectでのウォーミングはオプションです。 Quoting "プールが接続されていることを確認します。コールする必要はありません。内部的には、クエリを実行するときにドライバーが接続を呼び出すでしょう。私は試してみたのですが違いはありません –

答えて

2

あなたはproject readme statesとして、レガシーカサンドラドライバnode-cassandra-cqlを使用している、それはもはや維持されている:

ノード・カサンドラ・CQLは公式Datastax Node.js Driver for Apache Cassandraの 基盤であることに、コミュニティのドライバを卒業しました。

このリポジトリにはこれ以上開発はありません。可能であれば 皆が新しいドライバへの移行を開始することを奨励します。 には、準備されたステートメントに対する改善されたcqlからjavascriptタイプへのマッピングとともにいくつかの素晴らしい新機能があります。代わりに

使用DataStax Node.js driver

npm install cassandra-driver --save 
+0

私はgithubで同じ問題を投稿してくれてありがとうございました。申し訳ありませんが、読者にもっと注意を払う必要がありました。 –

関連する問題