Apache Cassandra cqlsh - игнорируется пространство ключей - PullRequest
0 голосов
/ 03 июля 2018

Мы используем 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. Когда это работает, они находятся на одном сервере.

1 Ответ

0 голосов
/ 05 июля 2018

Единственный способ обойти эту проблему, без жесткого кодирования пространства ключей в исходных CQL-файлах, - это создать сценарий, который читает список файлов в исходный код и запускает cqlsh для каждого из них с помощью пространства ключей. указано в командной строке. Мне кажется, что SOURCE не очень хорошо работает в удаленной среде (поскольку все это работает локально).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...