Cassandra CQL INSÉRER une requête rejetée pour non configuré famille de colonne
J'essaie d'insérer quelques lignes dans un Cassandra (1.2.16) de la base de données avec CQL, mais le Datastax API appel est rejeté. La création de la requête par le biais d'un PreparedStatement
et exécuté avec un BoundStatement
comme
session.Execute (boundStatement);
//query is
INSERT INTO "KeyspaceName.ColumnFamilyName" (key, column1, value) VALUES (?, ?, ?)
Elle est rejetée avec
Caught an exception Cassandra.InvalidQueryException: unconfigured columnfamily KeyspaceName.ColumnFamilyName
//which happens at the Execute call above
Cependant, je peux voir que la famille de la colonne n'existe pas
var cluster = Cluster.Builder ()
.AddContactPoint ("127.0.0.1")
.Build ();
new List<string> (cluster.Metadata.GetKeyspaces ()).ForEach ((value) => {
Console.WriteLine ("Keyspace: " + value);
new List<string> (cluster.Metadata.GetKeyspace(value).GetTablesNames()).ForEach((tableName) => {
Console.WriteLine("Table: " + tableName);
});
});
qui imprime (entre autres)
Keyspace: KeyspaceName
Table: ColumnFamilyName
Afin que la colonne de la famille est là.
Pourquoi ne peut-Cassandra trouver la table/colonne de la famille lors de l'exécution de la CQL INSERT
requête? Est-ce un problème de version? J'ai l'impression que les nouvelles versions de CQL se référer à des familles de la colonne sous forme de tableaux. Comment dois-je configurer le tableau?
OriginalL'auteur Sotirios Delimanolis | 2014-05-20
Vous devez vous connecter pour publier un commentaire.
L'exception fondamentalement signifie que vous n'avez pas créé cette colonne de la famille. Vous pouvez le récupérer toutefois l'exception est vous dire sa recherche d'un cf nommé
KeyspaceName.ColumnFamilyName
. Vous devez avoir "KeyspaceName" et "ColumnFamilyName" dans distinct, des guillemets, sinon l'analyseur vont penser que vous êtes seulement en fournissant un nom de colonne de la famille. Elle va voir votre requête, je veux insérer des données dans une colonne de la famille du nom de "KeyspaceName.ColumnFamilyName", alors essayez:"
travaillé. Est l'espace de nom requis? Peut-il seulement êtreINSERT INTO ColumnFamilyName ...
depuis leSession
a été créé à partir de l'espace de nom? Il n'a pas l'air de fonctionner quand je l'ai essayé.Ouais, sans les guillemets, il donne
unconfigured columnfamily columnfamilyname
. Je suppose que c'est la partie de la spécification. Notez que cela fonctionne avec des guillemets, mais sans espace de nomINSERT INTO "ColumnFamilyName"
.Yep, c'est peut être juste le nom des fc, mais vous aurez à utiliser le particulier ks via le C# du conducteur
sessionObj.ChangeKeyspace("KeyspaceName");
Cool. Dans mon cas, je n'ai pas besoin de changer de clés depuis que j'ai acquis à travers
Cluster#Connect(keyspaceName)
. Merci!OriginalL'auteur Lyuben Todorov