1Spring Boot NEO
The client is unauthorized due to authentication failure
解决方法:找到你安装neo4j的路径下的conf文件夹,找到neo4j.conf
#dbms.security.auth_enabled=false
将前面的注释#去掉,然后重启neo4j,在重启项目即可。
Spring Data NEO日志无法打印cyper日志
我定义了如下一个根据userName打印的方法,但是SDN会为我生成什么样子的cypher语句
@Repository
public interface UserRepository extends Neo4jRepository<UserNode, Long> {
List<UserNode> findByUserName(String userName);
}
关于无法打印日志,楼主反正也是一顿找,一开始百度,发现百度找不到NEO打印日志的内容,后来去GPT,发现GPT说的一点用没有(3.5GPT的数据截止于2021年,2021的网上关于SDN的数据,可能不太好吧),后来上stackoverflow也是查看了很多,也没找到我想要的答案,也可能是因为SDN的版本太多,各版本之间的差异吧。
首先,把根目录日志设置为debug,这时候日志很多,不用管,然后启动项目以后(这个生产环境是一定禁止的,这种行为不可以上生产,这里把root设置为debug,这是为了我们解决问题,后续这个得删除),进行查询以后,可以发现SDN给我们生成的cypher。
logging:
level:
root: DEBUG
以下是我们通过观察日志得出的,SDN的PartTreeNeo4jQuery记录执行方法,BoltRequest记录了执行的cypher
//这个类打印了我们具体执行的是哪一个cypher接口,方便我们直接定位我们执行的是哪个方法
o.s.d.n.r.query.PartTreeNeo4jQuery(简写)
org.springframework.data.neo4j.repository.query.PartTreeNeo4jQuery(完整路径)
//这个类则直接打印了,我们执行的具体的cypher语句
o.n.o.drivers.bolt.request.BoltRequest(简写)
org.neo4j.ogm.drivers.bolt.request.BoltRequest(完整路径)
现在我们将这两个类配置到yml,日志等级设置为debug,并且将之前的logging.level.root注释掉。需要注意的是,请不要无脑照抄下面的配置,而且通过我们上面的方法,找到是NEO中的哪个类在打印日志,然后将打印日志的那个类设置为debug。
logging:
level:
#root: DEBUG
org.springframework.data.neo4j.repository.query.PartTreeNeo4jQuery: DEBUG
org.neo4j.ogm.drivers.bolt.request.BoltRequest: DEBUG
如果你使用的不是SpringBoot的默认日志,例如下面这样。使用logback或者log4j2这些框架,那么你需要将日志配置xml中
logging:
config: classpath:logback-spring.xml
<logger name="org.springframework.data.neo4j.repository.query.PartTreeNeo4jQuery" level="DEBUG"/>
<logger name="org.neo4j.ogm.drivers.bolt.request.BoltRequest" level="DEBUG"/>
最终实现效果如下