密码查询失败,并显示Neo4jError:未知函数“apoc.convert.fromJsonMap”,但应安装apoc

ha5z0ras  于 2023-02-19  发布在  其他
关注(0)|答案(2)|浏览(203)

我使用独立的Helm图表在我的AKS集群中部署了Neo4j。它全部被部署并且我的Node.js服务器正确地连接到Neo4j。
但是查询会抛出Neo4jError: Unknown function 'apoc.convert.fromJsonMap'错误,因此apoc显然是缺失的。
我遵循了www.example.com中描述的程序https://neo4j.com/docs/operations-manual/current/kubernetes/configuration/#operations-installing-plugins,我的价值观如下所示。
我发现的唯一区别是,在指南中,apoc core实际上是在升级舵图之后启用的,而我安装它时已经启用了该选项。
https://neo4j.com/docs/apoc/current/config/上我看到
自Neo4j v.5.0起,neo4j.conf文件不再支持APOC配置设置。请将所有apoc.* 设置移至apoc. conf。还可以使用环境变量设置配置设置。
因此,由于neo4j-standalone使用的是版本4.4.16,我将apoc配置从apoc.config移至neo4.config,但查询仍未找到apoc程序。
为了启用apoc,我错过了什么配置吗?非常感谢。

neo4j-db:
# neo4j-standalone:
  nameOverride: "neo4j"
  fullnameOverride: 'neo4j'
  neo4j:
   # Name of your cluster
    name: "fixit-neo4j" # this will be the label: app: value for the service selector
    password: "password"
    ##
    passwordFromSecret: ""
    passwordFromSecretLookup: false
    edition: "community"
    acceptLicenseAgreement: "yes"
    offlineMaintenanceModeEnabled: false 
    resources:
      cpu: "1000m"
      memory: "2Gi"

  volumes:
    data:

      mode: 'volumeClaimTemplate'
      volumeClaimTemplate:
        accessModes:
          - ReadWriteOnce
        storageClassName: neo4j-sc-data
        resources:
          requests:
            storage: 4Gi

    backups:
      mode: 'share' # share an existing volume (e.g. the data volume)
      share:
        name: 'logs'

    logs:

      mode: 'volumeClaimTemplate'
      volumeClaimTemplate:
        accessModes:
          - ReadWriteOnce
        storageClassName: neo4j-sc-logs
        resources:
          requests:
            storage: 4Gi

  services:
    # A ClusterIP service with the same name as the Helm Release name should be used for Neo4j Driver connections originating inside the
    # Kubernetes cluster.
    default:
      # Annotations for the K8s Service object
      annotations: { }

  # A LoadBalancer Service for external Neo4j driver applications and Neo4j Browser
    neo4j:
    ### this would create cluster-neo4j svc
      enabled: false
 # env:
 #   NEO4J_PLUGINS: '["graph-data-science"]'
  config:
     
    server.bolt.enabled : "true"
    server.bolt.tls_level: "REQUIRED"
    server.bolt.listen_address: "0.0.0.0:7687"
    dbms.ssl.policy.bolt.client_auth: "NONE"
    dbms.ssl.policy.bolt.enabled: "true"
    
    server.directories.plugins: "/var/lib/neo4j/labs" 
    dbms.security.procedures.unrestricted: "apoc.*"
    server.config.strict_validation.enabled: "false"
    dbms.security.procedures.allowlist: "gds.*,apoc.*"
  apoc_config:
    apoc.trigger.enabled: "true"
    apoc.jdbc.neo4j.url: "jdbc:foo:bar"
    apoc.import.file.enabled: "true"

  
  startupProbe:
    failureThreshold: 1000
    periodSeconds: 50

  ssl:
  # setting per "connector" matching neo4j config
    bolt:
      privateKey:
        secretName: tls-secret 
        subPath:  tls.key 
      publicCertificate:
        secretName: tls-secret 
        subPath:  tls.crt 
      trustedCerts:
        sources: [ ] 
      revokedCerts:
        sources: [ ]
o4hqfura

o4hqfura1#

好吧,在看了很多关于同一主题的问题之后,我发现这个问题的一些解决方案是在config部分添加dbms.directories.plugins: "/var/lib/neo4j/labs"dbms.config.strict_validation: "false",据我所知,config部分镜像了serverdbms的这些设置。它确实起作用了,但奇怪的是官方指南中没有提到它。我的意思是,这些镜像设置是有意义的,告诉serverdbms在哪里寻找插件,但仍然应该提到它。我看到这么多关于这个的帖子,这意味着文档不够清晰。这很容易被认为是理所当然的,事实上,因为这个镜像插件的位置都为serverANDdbms需要只是没有说明任何地方的文档,我和其他人一样认为dbms已经配置了和server.directories.plugins: "/var/lib/neo4j/labs"相同的位置(文档中说要配置),并且还没有添加它,但是嘿..我想没有人是完美的。希望他们为了将来的开发者而改变文档,但是同时这个答案可能会有帮助。
正确的配置是

env:
    NEO4J_PLUGINS: '["graph-data-science"]'
  config:
    server.bolt.enabled: 'true'
    server.bolt.tls_level: 'REQUIRED'
    server.bolt.listen_address: '0.0.0.0:7687'
    dbms.ssl.policy.bolt.client_auth: 'NONE'
    dbms.ssl.policy.bolt.enabled: 'true'

    ## apoc
    server.directories.plugins: '/var/lib/neo4j/labs'
    server.config.strict_validation.enabled: 'false'
    dbms.security.procedures.unrestricted: 'apoc.*'
    dbms.security.procedures.allowlist: 'gds.*,apoc.*'

    ### additional needed dbms config mirroring server config
    dbms.directories.plugins: "/var/lib/neo4j/labs"
    dbms.config.strict_validation: "false"

  apoc_config:
    apoc.trigger.enabled: "true"
    apoc.jdbc.neo4j.url: "jdbc:foo:bar"
    apoc.import.file.enabled: "true"
m2xkgtsf

m2xkgtsf2#

似乎文档中缺少安装APOC插件的内容。请更改以下行以包含APOC:

NEO4J_PLUGINS: '["graph-data-science", "apoc"]'

你应该很好

相关问题