如何在执行cql查询时检查捕获的异常中的“why”值?

anauzrmj  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(353)

我已经开始使用cassandraemon(apache cassandra nosql with c#),我只是想知道是否有任何方法可以读取执行cql查询时捕获的异常中的“why”值?
当我执行以下操作时:

try
{
    CqlResult createResult = context.ExecuteCqlQuery(createTableCql);
}
catch (Exception exc)
{
    if (exc.Why.Contains("already existing"))
    { // Why = org.apache.cassandra.exceptions.AlreadyExistsException: Cannot add already existing column family "nameOfColumn" to keyspace "nameOfKeyspace"
    }
}

我无法以任何方式访问exc中的why。
我要做的是检查表是否已经存在。我知道我可以像这里一样检查它(如何检查是否存在cassandra表),但是只有在cql3中。此链接中描述的方法也没有帮助,因为我遇到了另一个异常,why value“unconfigured columnfamine schema\u columnfamies”。
我想知道如何阅读“为什么”的内容,因为我可能需要在其他背景下在未来。它并不是简单地返回某种我可以检查的cqlresult值,它只是抛出一个异常。
如何检查执行cql查询时捕获的异常中的“why”值?
当做!
ps为了避免隐藏的交叉发布:https://cassandraemon.codeplex.com/discussions/441028

m528fe3b

m528fe3b1#

该错误告诉您要查找的表(也称为列族)不存在,但是 schema_columnfamilies 表应该始终存在,因此问题很可能是您没有指定表所在的模式(也称为keyspace)。
此语句假定您已指定要使用 system 键空间:

SELECT columnfamily_name 
FROM schema_columnfamilies WHERE keyspace_name='keyspaceName';

我认为您没有指定应该使用系统键空间,所以请尝试将此作为您的cql语句来验证表是否存在。

SELECT columnfamily_name
FROM system.schema_columnfamilies WHERE keyspace_name='keyspaceName';

相关问题