【发布时间】:2018-12-12 05:33:41
【问题描述】:
我们使用的是 Apache Cassandra 3.11.2,cqlsh 5.0.1。我通过将文件传递给cqlsh 命令来重新创建和填充一些表,其中我有多个SOURCE 语句用于我正在创建和填充的各种表。这些文件都没有表的硬编码键空间,因此我在命令行中使用--keyspace 参数将它们传递给它们。
SOURCE 'favorite-destinations-table-drop.cql';
SOURCE 'favorite-destinations-table-create.cql';
...
奇怪的是,如果我在我的 Windows 机器上本地运行它,它工作正常。如果我在 Cassandra Docker 容器上本地运行它,它也可以正常工作。但是,如果我从安装了cqlsh(也是版本 5.0.1)的 Linux Docker 容器运行它,与安装了 Cassandra 3.11.2 的 Docker 容器通信,我会收到错误消息,指出我没有指定键空间,即使它在命令行上。我什至在源 CQL 文件的文件中放了一个 USE 语句,它仍然给我这个错误:
command = cqlsh --cqlversion 3.4.4 --file w2_int_test-database-init-populate.cql --keyspace w2_integration_test cassandra-0.cassandra.w3-rre-system.svc.cluster.local 9042
favorite-destinations-table-drop.cql:2:InvalidRequest: Error from server: code=2200 [Invalid query] message="No keyspace has been specified. USE a keyspace, or explicitly specify keyspace.tablename"
favorite-destinations-table-create.cql:16:InvalidRequest: Error from server: code=2200 [Invalid query] message="No keyspace has been specified. USE a keyspace, or explicitly specify keyspace.tablename"
...
我们不得不将--cqlversion 3.4.4 添加到命令行,因为我们遇到了奇怪的版本不匹配错误。所以我不确定这是否有任何关系。
似乎唯一不同的是,在失败的执行中,服务器位于与我们运行 cqlsh 的服务器不同的服务器上。当它工作时,它们在同一台服务器上。
【问题讨论】:
-
您是否尝试过更改 *.cql 文件?
-
你需要修改内部cql文件..要么放USE,要么指定keyspac.table
-
谢谢,我在
SOURCE语句之前尝试了USE,但没有奏效。我不想硬编码源 CQL 文件中的键空间,因为那样我只能将它们用于一个键空间,而我们使用多个。