2014-11-07 11 views
8
codice

mio Java è la seguente:"Tutto host (s) ha cercato per la query non riuscita" errore

import com.datastax.driver.core.Cluster; 
import com.datastax.driver.core.Metadata; 
import com.datastax.driver.core.Session; 

public class CustomerController { 

    public void execute() { 
     Cluster cluster = Cluster.builder() 
       .addContactPoints("172.16.11.126", "172.16.11.130") 
       .withPort(9042) 
       .build(); 
     Session session = cluster.connect(); 
     String command = "drop keyspace if exists bookstore"; 
     session.execute(command); 
     cluster.close(); 
    } 
} 

Quando eseguo il codice, ottengo il seguente errore:

Exception in thread "main" com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /172.16.11.130 (com.datastax.driver.core.TransportException: [/172.16.11.130] Cannot connect), /172.16.11.126 (com.datastax.driver.core.TransportException: [/172.16.11.126] Cannot connect))
at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:195)
at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:78)
at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1029)
at com.datastax.driver.core.Cluster.init(Cluster.java:120)
at com.datastax.driver.core.Cluster.connect(Cluster.java:197)
at com.pragatisoftware.datastax99.app.CustomerController.execute(CustomerController.java:12)
at com.pragatisoftware.datastax99.app.Application.run(Application.java:10)
at com.pragatisoftware.datastax99.app.Application.main(Application.java:6)

informazioni Ambiente :

macchina
  • Ubuntu
  • Eclipse Luna
  • 012.351.641,061 mila
  • Java 1.7
  • Cassandra 2.0.11

In cassandra.yaml:

native_transport_port: 9042 

Cassandra è in esecuzione su entrambi gli indirizzi IP forniti sopra (172.16.11.130 e 172.16.11.126) ed io Sono in grado di connettermi usando CQLSH su entrambe le macchine.

A proposito, lo stesso codice (con l'indirizzo IP appropriato) funzionava su una macchina Windows, usando Cassandra 2.0.9.

+3

Cosa stai 'cassandra.yaml'? In particolare 'rpc_address' – Chiron

+2

Assicurati anche' 'start_native_transport: true'' nel tuo file yaml. –

+1

@Chiron, rpc_address era localhost. Cambiando quello a 0.0.0.0 lavorato. Grazie. – Pradyumn

risposta

10

Cambia rpc_address: 0.0.0.0 broadcast_rpc_address: 1.2.3.4 (Non dovrebbe essere 0.0.0.0). per Cassandra versione 2.1.10

Anche per ulteriori questioni leggere il file cassandra.yaml. molte cose si spiegano da sole.

+0

ha funzionato per me per 2.1.9 – manish

+0

lavorato in 2.2.4 pure :) Grazie! – PayToPwn