如何通过PG服务器访问H2DB?Java连接报错求解决方案
解决H2 PG服务器连接报错:unexpected status 1375731712
你遇到的问题核心是用错了JDBC连接方式:H2的PG兼容服务器模拟的是PostgreSQL协议,不能用H2原生的TCP JDBC URL去连接,必须使用PostgreSQL的JDBC驱动和对应格式的URL。
具体修复步骤:
引入PostgreSQL JDBC驱动
如果用Maven管理依赖,添加以下依赖:<dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.6.0</version> <!-- 使用最新稳定版即可 --> </dependency>手动导入的话,下载对应版本的
postgresql-*.jar放到项目类路径中。修改连接代码
替换驱动类和连接URL,适配PostgreSQL协议:import java.sql.*; public class Main { public static void main(String[] a) { try { // 加载PostgreSQL驱动 Class.forName("org.postgresql.Driver"); // PG兼容服务器的URL格式:jdbc:postgresql://主机:端口/数据库名 Connection conn = DriverManager.getConnection( "jdbc:postgresql://localhost:5435/db_test", "sa", "0df " ); System.out.println("success"); conn.close(); } catch (Exception e) { e.printStackTrace(); // 打印完整栈信息更利于排查问题 } } }验证H2 PG服务器的启动状态
确保启动H2时开启了PG兼容模式,命令示例:java -cp h2-2.1.214.jar org.h2.tools.Server -pg -pgPort 5435其中
-pg参数表示启动PG兼容服务器,-pgPort指定监听端口(默认就是5435,可省略)。
关于加密配置的额外说明
你原连接中使用了CIPHER=AES,在PG兼容模式下,H2的加密参数传递方式不同,建议先测试无加密的连接确认能成功后,再尝试添加加密配置。
内容的提问来源于stack exchange,提问作者gstone
相关产品推荐
相关产品推荐

