最近使用py2neo操作neo4j图数据库,想要同时操作多个图,但neo4j当前每个数据库只能支持一个graph,即使我们数据库下建立多个图,也只能操作其中的某一个。(顺便说下,选择具体数据库中具体的语句为:
graph=Graph('http://localhost:7474',auth=("username", "password"),name='databasename')
因此,只能通过访问多个数据库来实现同时操作多个图的效果。
一、实现原理
系统上安装了neo4j,无论是desktop版或community版,会默认占用7474端口作为访问默认窗口,因此需要另外新建数据库,且将其端口参数配置成其他可用端口即可。
二、实现过程
如果是neo4j community版的,可以尝试根据下面链接方法来实现。
同一台机器中启动多个neo4j数据库 - 灰信网(软件开发博客聚合)
本人使用的neo4j desktop版本,因此接下来以neo4j desktop进行讲解。
(一)建新数据库
使用neo4j desktop建立新数据库比较容易,只需要新建项目,添加数据库(可选择版本)即可。
(二)修改端口
配置文件在 数据库所在文件夹下conf\neo4j.conf中(通过界面数据库的setting也可以进入),主要修改以下语句:
# Bolt connector
dbms.connector.bolt.enabled=true
#dbms.connector.bolt.tls_level=DISABLED
dbms.connector.bolt.listen_address=:7687#解除注释,修改端口号
dbms.connector.bolt.advertised_address=:7687#解除注释,修改端口号# HTTP Connector. There can be zero or one HTTP connectors.
dbms.connector.http.enabled=true
dbms.connector.http.listen_address=:7474#解除注释,修改端口号
dbms.connector.http.advertised_address=:7474#解除注释,修改端口号
(三)数据库运行
端口修改后,为同时运行多个数据库提供了可能。但desktop的界面不允许你同时运行多个数据库,即使端口不一样也不行,所以需要将数据库以服务的形式运行,具体操作如下:
1.进入数据库所在文件夹的bin中,打开命令行终端(就是cmd那个),
2.输入neo4j install-service,安装服务功能。
3.输入neo4j start,运行服务。
这样在系统服务列表中可以看到数据库运行了,停止的话在服务中停止即可。
三、neo4j和JDK
neo4j数据库服务的运行需要java的JDK进行支持,且不同版本需要的JDK版本不一样,可以看下面链接介绍:
(一)问题
neo4j desktop自带了java的虚拟环境,建立不同版本数据库时,也会配置好所需的JDK,所以能够正常运行。
但是一旦将neo4j desktop中的数据库用服务的方式运行,无法直接调用neo4j desktop内对应的JDK,只会调用默认环境配置下的JDK,此时可能出现版本不一致的情况,提示为:
ERROR! Neo4j cannot be started using java version 1.8.0_211
因此,需要重新配置好数据库所需要的JDK路径。
(二)解决
1.neo4j desktop中java文件所在路径为neo4j\data\distributions\java,记录对应你需要的jdk版本所在路径,这里我使用的是jdk11
2.修改运行的配置文件,路径为数据库所在文件夹下bin\Neo4j-Management
将jJDK路径配置上去即可。