我正在使用 cqlsh 命令行实用程序来加载一些 DDL。
我使用的实用程序版本是这样的:
[cqlsh 6.0.0 | Cassandra 4.0.0.47 | CQL spec 3.4.5 | Native protocol v5]
加载DDL.cql的命令:
cqlsh -u username -p password cassandra.example.com 65503 --ssl -f DDL.cql
我在 cql 脚本中有一行破坏了语法。
INSERT into tablename (key,columnname1,columnname2) VALUES
('keyName','value1','/value2/*/value3');
/*
被解释为多行注释的开始。它曾经适用于旧版本的 cqlsh。
有办法逃避这个序列吗?
我们看到的错误如下所示:
SyntaxException: line 4:2 mismatched input 'Update' expecting ')' (...,'value1','/value2INSERT into tablename(INSERT into tablename (key,columnname1,columnname2)) VALUES ('[Update]-...)
SyntaxException: line 1:0 no viable alternative at input '(' ([(]...)
交互模式下运行时也有相同的行为。
我可以确认它曾经在 Cassandra 3.11 中工作(我特别测试了 C* 3.11.13)。由于某种原因,它不适用于从 4.0.0 开始的任何 C* 4.0 版本。
感谢您记录CASSANDRA-17667,我们现在正在对其进行分类。我还没有弄清楚哪个更改破坏了它,但希望我们很快就能修复它。干杯!
面临同样的问题,一个简单的解决方法帮助了我们。基本上必须将多行注释终止符拆分为两个字符串并将其连接起来。
‘*/‘:失败
‘*’+‘/‘:有效