org.postgresql.util.PSQLException:协议错误。会话设置失败

Posted

技术标签:

【中文标题】org.postgresql.util.PSQLException:协议错误。会话设置失败【英文标题】:org.postgresql.util.PSQLException: Protocol error. Session setup failed 【发布时间】:2015-06-27 17:25:26 【问题描述】:

我知道这些类型的问题已经存在,但提供的解决方案对我不起作用。在我的应用程序中,没有版本不匹配的黑白驱动程序和 PostgreSQL 服务器。我还没有找到任何其他解决方案。

我正在使用 PostgreSQL 服务器 9.4 和 postgresql-9.4-1201.jdbc4.jar。

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="org.postgresql.Driver"></property>
    <property name="username" value="postgres"></property>
    <property name="password" value="root"></property>
    <property name="url" value="jdbc:postgresql://localhost:5432/myapp"></property>
</bean>

pg_hba.conf如下:

host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5

postgresql.conf如下

listen_addresses = '*'
port = 5432         
max_connections = 100

我还检查了 netstat o/p 。

TCP    [::]:5432              [::]:0                 LISTENING
TCP    127.0.0.1:5432         0.0.0.0:0              LISTENING

谢谢

【问题讨论】:

请显示连接字符串。 好的。这看起来很标准。接下来要检查的是服务器是否实际上在通过 TCP 服务的 localhost 上的该端口上。您是否还可以添加pg_hba.conf 的内容(未注释掉的行),以及来自postgres.conflisten_addresses 行(如果未注释掉)、port 行以及与@987654329 相关的所有设置@. @RealSkeptic 我已经提供了详细信息。postgres.conf 中的 SSL 设置被注释掉了。 您确定您在与 PostgreSQL 服务器相同的主机上运行 Java 程序吗?你能在那里成功打开一个到端口 5432 的套接字吗?您是通过属性传递用户名和密码,还是将它们作为参数添加到 URL? 是的,java 程序和 postgres 都在我的本地机器上运行。我正在使用 Spring 框架 DataManagerDataSource 类并传递属性。请参阅我的问题。 【参考方案1】:

我也遇到过同样的问题。 只需在 postgresql.conf 中将端口号 5432 更改为 5433。 重新启动系统。

postgresql.conf 文件在 windows 中的位置:C:\Program Files\PostgreSQL\9.4\data

希望对你有所帮助。

【讨论】:

以上是关于org.postgresql.util.PSQLException:协议错误。会话设置失败的主要内容,如果未能解决你的问题,请参考以下文章