我是新手。回复之前请考虑一下。
我从此源列表安装了 Apache Cassandra:
deb [signed-by=/etc/apt/keyrings/apache-cassandra.asc] https://debian.cassandra.apache.org 50x main
然后我从systemctl启动它。我知道它应该自动启动,对吗?开始后我得到了
active (exited)
。我知道像数据库或 Web 服务器这样的服务应该是持久的,active (running)
我深入挖掘并在/var/log/cassandra/system.log
中我发现了以下错误:
ERROR [main] 2024-09-25 14:50:58,401 CassandraDaemon.java:900 - Exception encountered during startup
java.lang.ExceptionInInitializerError: null
at org.apache.cassandra.service.CassandraDaemon.setupVirtualKeyspaces(CassandraDaemon.java:575)
at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:286)
at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:744)
at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:878)
Caused by: org.apache.cassandra.exceptions.SyntaxException: Failed parsing CREATE TABLE: [CREATE TABLE streaming ( id timeuuid,
follower boolean,
operation text,
peers frozen<list<text>>,
status text,
progress_percentage float,
last_updated_at timestamp,
duration_millis bigint,
failure_cause text,
success_message text,
bytes_to_receive bigint,
bytes_received bigint,
bytes_to_send bigint,
bytes_sent bigint,
files_to_receive bigint,
files_received bigint,
files_to_send bigint,
files_sent bigint,
status_ınıt_timestamp timestamp,
status_start_timestamp timestamp,
status_success_timestamp timestamp,
status_faılure_timestamp timestamp,
PRIMARY KEY ((id)))] reason: SyntaxException line 21:9 no viable alternative at character 'ı'
at org.apache.cassandra.cql3.CQLFragmentParser.parseAny(CQLFragmentParser.java:48)
at org.apache.cassandra.cql3.statements.schema.CreateTableStatement.parse(CreateTableStatement.java:465)
at org.apache.cassandra.db.virtual.StreamingVirtualTable.<init>(StreamingVirtualTable.java:37)
at org.apache.cassandra.db.virtual.SystemViewsKeyspace.<init>(SystemViewsKeyspace.java:47)
at org.apache.cassandra.db.virtual.SystemViewsKeyspace.<clinit>(SystemViewsKeyspace.java:26)
... 4 common frames omitted
因此,我更改了系统语言,重新创建并删除了语言环境(从 tr_TR.UTF-8 切换为 en_US.UTF-8),并从 GNOME 设置中更改了它。
我使用Ubuntu 24.02。在此错误中,您会看到使用了“ı”(土耳其语字符,i,但没有点),并且 Java 基本上无法找到“ı”的替代品,但问题是我刚刚安装了 Cassandra。我没有创建这个表。这可能是针对 Cassandra 的,由 Cassandra 自动创建(我没有使用 Cassandra,这将是我第一次使用,但如你所见,我遇到了错误)。
我现在应该做什么?我将系统语言设置为 en_US.UTF-8 但错误未解决。这是一个错误吗?
另外,我尝试了其他稳定版本41x,结果相同。我在安装之前也完全删除了
/var/lib/cassandra
和/var/log cassandra
。
编辑:我想我发现了,这可能是一个错误。
在
StreamingVirtualTable.java
文件中,stateCoulmns()
函数包含一个 toLowerCase()
。
sb.append(" status_").append(state.name().toLowerCase()).append("_timestamp timestamp,\n");
在我的语言中,小写“I”等于“ı”。那么我们可以用
.toLowerCase(Locale.ENGLISH)
修复吗?
这是一个非常有趣的错误,我以前从未见过。我认为系统语言不重要,但我们需要进一步调查。
如果您愿意请在 Jira 项目上记录一张票证,其中包含有关如何复制问题的详细说明,那就太棒了。干杯!