我使用的是 Neo4j 1.4.1 版和 PostgresSQL 13 和 PgAdmin 4.30。我最近安装了 PostgreSQL 13,在此之前我有 PostgreSQL 12 和 PgAdmin 4.24,当这个 ETL 导入工作起作用时。
但是现在,在删除 PostgreSQL 12 后,我尝试使用 neo4j ETL 工具将本地 postgres 数据库导入 Neo-4j。
我的输入连接详细信息:
<块引用>主机=本地主机
端口= 5432
数据库= 我的数据库名称
连接 URL= jdbc:postgresql://localhost:5432/mydatabasename
Username=myUsername password="mypassword"
但是当我单击“测试并保存连接”按钮时,它显示此错误:
<块引用>2021 年 1 月 30 日上午 1:10:43 org.postgresql.Driver 连接严重: 连接错误:org.postgresql.util.PSQLException: 不支持身份验证类型 10。检查你是否有 配置 pg_hba.conf 文件以包含客户端的 IP 地址或 子网,并且它正在使用受支持的身份验证方案 司机。在 org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:614) 在 org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:222) 在 org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) 在 org.postgresql.jdbc.PgConnection.(PgConnection.java:194) 在 org.postgresql.Driver.makeConnection(Driver.java:431) 在 org.postgresql.Driver.connect(Driver.java:247) 在 java.sql.DriverManager.getConnection(DriverManager.java:664) 在 java.sql.DriverManager.getConnection(DriverManager.java:247) 在 org.neo4j.etl.rdbms.Support.testConnection(Support.java:32) 在 org.neo4j.etl.rdbms.Support.main(Support.java:74)
连接失败。 SQL 状态:08004,消息:身份验证类型 不支持 10。检查您是否已配置 pg_hba.conf 文件以包含客户端的 IP 地址或子网,并且它是 使用驱动程序支持的身份验证方案。
我在这篇文章 Unable to connect to Postgress DB due to the authentication type 10 is not supported 的帮助下。我尝试更改我的 pg_hba.conf 设置并将方法设置为 md5:
<块引用>本地所有所有 md5
我也像这样配置了我的 postgresql.conf:
<块引用>listen_addresses = '*' port = 5432 max_connections = 100 password_encryption = md5
但是没有任何效果。我什至尝试重新安装 PostgreSQL 13 和 PgAdmin 4.30。
我下载了最新的 JDBC 版本并尝试使用 postgresql-42.2.18.jre7 进行连接,但同样的错误。当我使用Java程序连接到这个数据库时,连接成功。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JavaPostgresIntegration {
public static void main(String[] args) {
Connection c = null;
try {
Class.forName("org.postgresql.Driver");
c = DriverManager.getConnection("jdbc:postgresql://localhost:5432/mydatabase", "postgres", "mypassword");
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getClass().getName() + ": " + e.getMessage());
System.exit(0);
}
System.out.println("Opened database successfully");
try {
c.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
输出:成功打开数据库
(我正在为这个程序使用下载的 postgresql-42.2.18.jre7。)
编辑:我安装了 PostgreSQL 12,它解决了问题。当我使用 Neo4j 连接到 PostgreSQL 13 时,错误仍然存在。