Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 避免Cassandra 2.1警告触发器目录不存在_Java_Cassandra - Fatal编程技术网

Java 避免Cassandra 2.1警告触发器目录不存在

Java 避免Cassandra 2.1警告触发器目录不存在,java,cassandra,Java,Cassandra,创建新的Cassandra并执行简单的插入操作将导致意外警告: SharedPool-Worker-1]警告o.apache.cassandra.utils.FBUtilities-触发器目录不存在,请创建它并重试 检查源代码时发现Cassandra希望存在触发器目录(默认名称为“触发器”) 因为我每次都会启动一个新的Cassandra,所以我想知道如何建议Cassandra自己创建触发器目录。我不想人为地摸索它 [更新]Cassandra使用默认的main方法,并在用户空间中启动。由于在cas

创建新的Cassandra并执行简单的插入操作将导致意外警告:

SharedPool-Worker-1]警告o.apache.cassandra.utils.FBUtilities-触发器目录不存在,请创建它并重试

检查源代码时发现Cassandra希望存在触发器目录(默认名称为“触发器”)

因为我每次都会启动一个新的Cassandra,所以我想知道如何建议Cassandra自己创建触发器目录。我不想人为地摸索它

[更新]Cassandra使用默认的main方法,并在用户空间中启动。由于在cassandra.yaml定义过程中创建了缓存、数据和第三个目录,我想知道在哪里指定触发器目录,或者如何创建它

@近距离尖叫者
在日志中有一个讨厌的警告,应该根本不存在,这就是我认为的bug,所以请允许这个问题…(无意冒犯,只是简单的堆栈溢出请求)

您在插入的表或模式中是否定义了触发器?还是从2.0之前的版本升级了Cassandra

在任何情况下,2.1的
/triggers
目录取决于您的安装类型

  • 对于tarball安装,它应该是:
    {install\u location}/conf/triggers
  • 对于打包安装,它应该是:
    /etc/cassandra/triggers

我从FBUtilities.cassandraTriggerDir方法的代码中了解到,在尝试默认触发器目录“triggers”之前,会读取属性“cassandra.triggers\u dir”。通过将属性设置为正确的目录(创建后),解决了该问题

问题的主要原因是:第一,触发器目录根本不存在,第二,Cassandra目录不是类路径的一部分。因此,卡桑德拉不可能不正确地检测到触发器目录

总结一下,本期缺少cassandra.yaml条目


PS:谢谢布莱斯的帮助

两个问题:你在哪个操作系统上运行Cassandra?Cassandra以什么用户的身份运行?这听起来像是权限问题,请检查您的linux安全设置。我只是删除Cassandra的完整目录,从我编写的配置类中创建一个Cassandra.yaml并启动Cassandra。因此,这是一个全新的安装,Cassandra只是使用文件中正确的Cassandra.config属性进行初始化。所以我想知道我是否错过了一个必须打开的简单设置。该警告是在插入时发出的,我没有指定触发器。@MartinKersten我在我的2.1.4
cassandra.yaml
文件中找不到任何特定于触发器使用/创建的内容。但是我可以告诉你,无论你的
cassandra.yaml
所在的目录是哪个,你都需要一个
触发器
目录。试着创建它,看看这是否解决了你的问题。我真的应该自己创建触发器目录吗?@MartinKersten如果你打算删除整个Cassandra目录,然后从你自己的自定义应用程序中重新创建所有内容,那么“是”。解决了问题并找到了最终原因。Cassandra目录应该位于类路径上,而在我的例子中不是这样。yaml肯定会丢失触发器目录的属性。