libneo4j-client:无法连接,无法诊断
libneo4j-client: Can't connect, can't diagnose
我想使用 C++ 实现连接到 neo4j 数据库的基本任务。
为此,我得到了 libneo4j-client 并从 https://neo4j-client.net/ 复制了代码。编译正常。
现在我执行了以下代码:
neo4j_client_init();
neo4j_connection_t* connection = neo4j_connect("neo4j://user:pass@localhost:7687", NULL, NEO4J_INSECURE);
assert(connection);
这导致断言停止执行,因为连接是 NULL
。
请注意,我当然输入了实际的用户名和密码。
我确定服务器确实存在。在浏览器中打开 localhost:7474 打开预期的浏览器界面,接受用户名和密码并提到 7687 是有效端口。
同样,使用 cypher-shell
访问数据库也可以正常工作。
据我所知,neo4j://localhost:7687 应该是正确的地址。
我尝试了几种变体,比如省略 neo4j:// 协议标识符,尝试用 bolt、http 和 https 标识符替换它,尝试将 7474 作为端口,所有这些的组合。
然后我尝试使用库的日志记录功能获取一些诊断数据:
FILE* log_file = fopen("log.dat" , "w");
neo4j_logger_provider* logger = neo4j_std_logger_provider(log_file, 1, 0);
neo4j_config_t* config = neo4j_new_config();
neo4j_config_set_username(config, "username");
neo4j_config_set_password(config, "password");
neo4j_config_set_logger_provider(config, logger);
neo4j_connection_t* connection = neo4j_connect("neo4j://localhost:7687", config, NEO4J_INSECURE);
assert(connection);
作为调用fopen
的结果,创建了log.dat
,但仅此而已,之后文件为空,断言失败。
在这一点上,我不知道还能尝试什么或如何进行任何类型的诊断。
同样,我的目标是一般连接数据库,我并没有特别绑定到 libneo4j-client。但是,我想编写一个无需进一步安装即可在新系统上运行的程序,因此我不能使用 system()
调用必须安装的 cyper-shell
之类的东西。再加上后面会有很多数据流,所以我希望连接尽可能直接。
还有比我聪明的吗?
有一件事我不确定 libneo4j-client
的版本兼容性和数据库的版本。
我还发现了四年的问题 我将开始阅读 cyper API,但我希望它能在 libneo4j-client
.
中解决
编辑:根据 https://neo4j.com/developer/c/,libneo4j-client
实际上是 C++ 使用的默认值,并且没有列出任何替代方案。
编辑:neo4j-client
本身似乎也不起作用:
$ neo4j-client -u neo4j localhost
error: A secure connection could not be esablished (try --insecure)
$ neo4j-client -u neo4j localhost --insecure
error: Could not agree on a protocol version
$ neo4j-client -u neo4j neo4j://localhost:7687
error: A secure connection could not be esablished (try --insecure)
$ neo4j-client -u neo4j neo4j://localhost:7687 --insecure
error: Could not agree on a protocol version
这是否表示不兼容? neo4j-client
使用的不是服务器使用的协议?
在Connection with neo4j-client failed on OS X yosemite中,这是通过更改端口解决的,但是,所以也不确定。
问题已通过降级Neo4J版本解决
版本 4.0.1 使用更高版本的 bolt 协议,目前尚未记录,因此 neo4j-client
未使用。
3.5 版使用旧协议(bolt 版本 1),因此兼容。
我想使用 C++ 实现连接到 neo4j 数据库的基本任务。
为此,我得到了 libneo4j-client 并从 https://neo4j-client.net/ 复制了代码。编译正常。
现在我执行了以下代码:
neo4j_client_init();
neo4j_connection_t* connection = neo4j_connect("neo4j://user:pass@localhost:7687", NULL, NEO4J_INSECURE);
assert(connection);
这导致断言停止执行,因为连接是 NULL
。
请注意,我当然输入了实际的用户名和密码。
我确定服务器确实存在。在浏览器中打开 localhost:7474 打开预期的浏览器界面,接受用户名和密码并提到 7687 是有效端口。
同样,使用 cypher-shell
访问数据库也可以正常工作。
据我所知,neo4j://localhost:7687 应该是正确的地址。
我尝试了几种变体,比如省略 neo4j:// 协议标识符,尝试用 bolt、http 和 https 标识符替换它,尝试将 7474 作为端口,所有这些的组合。
然后我尝试使用库的日志记录功能获取一些诊断数据:
FILE* log_file = fopen("log.dat" , "w");
neo4j_logger_provider* logger = neo4j_std_logger_provider(log_file, 1, 0);
neo4j_config_t* config = neo4j_new_config();
neo4j_config_set_username(config, "username");
neo4j_config_set_password(config, "password");
neo4j_config_set_logger_provider(config, logger);
neo4j_connection_t* connection = neo4j_connect("neo4j://localhost:7687", config, NEO4J_INSECURE);
assert(connection);
作为调用fopen
的结果,创建了log.dat
,但仅此而已,之后文件为空,断言失败。
在这一点上,我不知道还能尝试什么或如何进行任何类型的诊断。
同样,我的目标是一般连接数据库,我并没有特别绑定到 libneo4j-client。但是,我想编写一个无需进一步安装即可在新系统上运行的程序,因此我不能使用 system()
调用必须安装的 cyper-shell
之类的东西。再加上后面会有很多数据流,所以我希望连接尽可能直接。
还有比我聪明的吗?
有一件事我不确定 libneo4j-client
的版本兼容性和数据库的版本。
我还发现了四年的问题 libneo4j-client
.
中解决
编辑:根据 https://neo4j.com/developer/c/,libneo4j-client
实际上是 C++ 使用的默认值,并且没有列出任何替代方案。
编辑:neo4j-client
本身似乎也不起作用:
$ neo4j-client -u neo4j localhost
error: A secure connection could not be esablished (try --insecure)
$ neo4j-client -u neo4j localhost --insecure
error: Could not agree on a protocol version
$ neo4j-client -u neo4j neo4j://localhost:7687
error: A secure connection could not be esablished (try --insecure)
$ neo4j-client -u neo4j neo4j://localhost:7687 --insecure
error: Could not agree on a protocol version
这是否表示不兼容? neo4j-client
使用的不是服务器使用的协议?
在Connection with neo4j-client failed on OS X yosemite中,这是通过更改端口解决的,但是,所以也不确定。
问题已通过降级Neo4J版本解决
版本 4.0.1 使用更高版本的 bolt 协议,目前尚未记录,因此 neo4j-client
未使用。
3.5 版使用旧协议(bolt 版本 1),因此兼容。