Java PGJDBC:无法从客户端接收数据:
亲爱的飞越者: 我在Postgres9.6(Windows10)上尝试事件驱动的侦听器/通知 我遵循了SteveTaylor在上给出的PGJDBC示例 我从下载pgjdbc-ng-0.7-complete.jar开始,并将其放在我的类路径中,以替换标准JDBC驱动程序 当我试图使用pgjdbc驱动程序连接到Postgres数据库时,我收到一个错误: 接收到的连接:主机=127.0.0.1端口=50325 授权连接:user=postgres数据库=scott 无法从客户端接收数据:远程主机强制关闭了现有连接 以下是我的系统变量: DBHost:localhost 域名:斯科特 数据库端口:5432 DBUserName:postgres 密码:postgres 我还没过第一关,剩下的看起来像珠穆朗玛峰。请帮帮我。如果你需要代码,我也会遵循Steve的代码 根据约瑟夫·拉森的回答,数据库一直在运行。我已经成功地从PGADMIN和Java连接到Postgres数据库。我认为问题在于连接字符串。从Java开始,当我使用Postgres提供的标准JDBC时,我使用的是像JDBC:p这样的URLostgresql://localhost:5432/dbname 但PGJDBC建议使用不同的连接字符串,如JDBC:PGSQL://localhost:5432/dbname。我试着用那根绳子(强行)连接,但它不起作用。PGJDBC PGDataSource中没有直接提供URL的方法。我必须经历: setHost(DBHost) 设置端口(5432) setDatabase(DBName) setUser(DBUserName) setPassword(DBPassword) 我不知道它发送到数据库的URL是什么。请给我建议一个连接字符串,这个问题就解决了 谢谢 非常感谢您让我发布错误消息:Java PGJDBC:无法从客户端接收数据:,java,postgresql,events,pg-jdbc,Java,Postgresql,Events,Pg Jdbc,亲爱的飞越者: 我在Postgres9.6(Windows10)上尝试事件驱动的侦听器/通知 我遵循了SteveTaylor在上给出的PGJDBC示例 我从下载pgjdbc-ng-0.7-complete.jar开始,并将其放在我的类路径中,以替换标准JDBC驱动程序 当我试图使用pgjdbc驱动程序连接到Postgres数据库时,我收到一个错误: 接收到的连接:主机=127.0.0.1端口=50325 授权连接:user=postgres数据库=scott 无法从客户端接收数据:远程主机强制关
Exception in thread "main" java.lang.NullPointerException
at com.impossibl.postgres.system.BasicContext.loadLocale(BasicContext.java:294)
at com.impossibl.postgres.system.BasicContext.init(BasicContext.java:273)
at com.impossibl.postgres.jdbc.PGConnectionImpl.init(PGConnectionImpl.java:251)
at com.impossibl.postgres.jdbc.ConnectionUtil.createConnection(ConnectionUtil.java:182)
at com.impossibl.postgres.jdbc.AbstractDataSource.createConnection(AbstractDataSource.java:723)
at com.impossibl.postgres.jdbc.PGDataSource.getConnection(PGDataSource.java:66)
at com.impossibl.postgres.jdbc.PGDataSource.getConnection(PGDataSource.java:58)
at PGListenNotify.<init>(PGListenNotify.java:26)
at PGListenNotify.main(PGListenNotify.java:37)
你真的启动了数据库服务器吗?我不知道PostgreSQL server可以在Windows上运行,但我从未尝试过 我会把你的问题简化一点。我对Windows上的psql一无所知,但在Mac上,我会启动服务器,然后使用psql命令(它是PostgreSQL的一部分)确保服务器已启动并运行 如果要连接,那么问题可能是: -根本没有服务器 -服务器未在您尝试的端口上运行 -服务器未侦听主机127.0.0.1上的连接,但可能正在侦听计算机的实际IP地址 -我不确定那个特定的错误,但用户名、密码或数据库可能不存在 我会使用psql来找出哪些可能的原因才是真正的问题。这将您的程序隔离为问题的一部分,并且它完全成为管理数据库服务器的一部分。这看起来像是in
pgjbdc ng
。已解决此问题,请尝试最新版本0.8.1
最新版本提供了与异步通知相关的详细文档
如果它仍然无法在您的Windows系统上执行,请创建一个问题。您可以用
pgjdbc ng
标记此帖子以将其与“ng”驱动程序关联。您可以发布您收到的此错误的stacktrace吗?@kdubb感谢您让我发布错误消息。
import java.sql.SQLException;
import java.sql.Statement;
import com.impossibl.postgres.api.jdbc.PGConnection;
import com.impossibl.postgres.jdbc.PGDataSource;
public class PGListenNotify
{
PGConnection connection;
public PGListenNotify()
{
String DBHost = System.getenv("DBHost");
String DBName = System.getenv("DBName");
String DBUserName = System.getenv("DBUserName");
String DBPassword = System.getenv("DBPassword");
try
{
PGDataSource dataSource = new PGDataSource();
dataSource.setHost(DBHost);
dataSource.setPort(5432);
dataSource.setDatabase(DBName);
dataSource.setUser(DBUserName);
dataSource.setPassword(DBPassword);
connection = (PGConnection) dataSource.getConnection();
Statement statement = connection.createStatement();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
PGListenNotify ln = new PGListenNotify();
}
}