【问题标题】:Cassandra python error no viable alternative at input 'SOURCE' ([SOURCE]...)">Cassandra python错误在输入'SOURCE'([SOURCE] ...)>
【发布时间】:2017-08-22 02:51:57
【问题描述】:

当我尝试从 python 运行以下命令时(我正在使用带有 Python 2.7.6 的 Cassandra Datastax Python 驱动程序)

cluster = Cluster([CASSANDRA_HOST], port=CASSANDRA_PORT, cql_version=CASSANDRA_CQL_VERSION, protocol_version=3)
session = cluster.connect(CASSANDRA_KEYSPACE)

NEW_ID = "9999999999"
CQL_FILE_NAME = "FNAME-"+NEW_ID+".cql"
cql_cmd = "SOURCE '~/dev/cql_files/"+ CQL_FILE_NAME + "'"
session.execute(cql_cmd)

我收到以下错误:

 File "/usr/local/lib/python2.7/dist-packages/cassandra/cluster.py", line 2012, in execute
    return self.execute_async(query, parameters, trace, custom_payload, timeout, execution_profile, paging_state).result()
  File "/usr/local/lib/python2.7/dist-packages/cassandra/cluster.py", line 3801, in result
    raise self._final_exception
cassandra.protocol.SyntaxException: <Error from server: code=2000 [Syntax error in CQL query] message="line 1:0 no viable alternative at input 'SOURCE' ([SOURCE]...)">

但是当我从 cqlsh 运行相同的字符串时,它运行良好。关于我应该改变什么的任何想法?谢谢!

字符串如下所示:

"SOURCE '~/dev/cql_files/FNAME-9999999999.cql'"

【问题讨论】:

    标签: python cassandra datastax cql cqlsh


    【解决方案1】:

    SOURCE 是 cqlsh 独有的命令,它实际上不是 CQL 规范的一部分,因此您不能使用客户端驱动程序使用它:

    重要提示:本节中描述的 CQL shell 命令只能在 cqlsh shell 中工作,并且不能从驱动程序中访问。 CQL shell 使用本机协议和 Datastax python 驱动程序在连接的 Cassandra 主机上执行 CQL 命令。有关配置信息,请参阅 Cassandra 3.0 cassandra.yaml 文件。

    【讨论】:

    • 谢谢!我可以使用另一个驱动程序/库来执行此命令吗?
    • 我也尝试使用 -e 标志,但 cqlsh 返回错误 cqlsh: error: no such option: -e
    • cqlsh -f ~/dev/cql_files/FNAME-9999999999.cql 应该可以工作
    猜你喜欢
    • 2017-12-23
    • 2011-07-20
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2017-02-12
    • 2021-09-16
    相关资源
    最近更新 更多