Мы используем 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, это также работает нормально. Однако, если я запускаю его из Linux Docker comtainer, на котором установлена cqlsh
(также версия 5.0.1), разговаривая с контейнером Docker, на котором установлена Cassandra 3.11.2, я получаю сообщения об ошибках, в которых не указывается пространство ключей, хотя это в командной строке. Я даже поместил оператор USE
в файл, который является источником CQL-файлов, и он все еще дает мне эту ошибку:
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
. Когда это работает, они находятся на одном сервере.