使用Java从OCI示例在PostgreSQL 15.3中插入数据时出错:返回自动生成的密钥问题

zbwhf8kr  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(117)

我已经将我的PostgreSQL数据库从旧服务器转移到OCI(Oracle云基础设施)示例。旧服务器运行的是PostgreSQL 8.4版,而OCI示例已升级到PostgreSQL 15.3。我目前正在使用Java 8,并希望使用Java连接到数据库。
当我尝试从本地计算机连接到PostgreSQL数据库时,连接成功,我可以执行所有操作。但是,当我尝试从OCI示例连接到PostgreSQL数据库时,连接工作,我可以获取和更新数据,但在尝试插入数据时遇到错误。错误消息如下:

更新数据库出错。原因:org.postgresql.util. PSQLExException:只有8.2和更高版本的服务器支持返回自动生成的密钥。

SQL:insert into t_buyer_cart(visitorno,chartno,lineno,thingno,flag,added_by,added_on,updated_by,updated_on,del_flag)values(???????,?)

#原因:org.postgresql.util.PSQLException:只有8.2和更高版本的服务器才支持返回自动生成的密钥。SQL []; SQL state [0A000];错误代码[0];只有8.2和更高版本的服务器才支持返回自动生成的密钥。嵌套异常为org.postgresql.util.PSQLException:只有8.2和更高版本的服务器支持返回自动生成的密钥。
为了解决这个问题,我尝试了以下步骤:
1.正在将JDBC版本升级到最新版本(42.6.0)。
1.正在降级JDBC版本。
1.正在检查本地计算机连接。
1.检查详细的日志(确认正确的PostgreSQL和JDBC版本)。
1.注解掉返回方法(只尝试插入数据)。
1.正在检查API负载均衡日志。
1.正在检查PostgreSQL数据库日志。
1.在VCN(虚拟云网络)设置中允许在端口5432上进出。
1.检查PostgreSQL配置文件中的最大连接数和远程连接设置。
1.验证telnet连接是否正常。
1.检查root用户(postgres用户)。
1.正在验证所有用户的表权限。
1.检查JAR文件和pom.xml文件的权限(均设置为777)。
尽管尝试了这些步骤,但问题仍未解决。有谁知道这类问题的发生背后的想法,以及如何解决它?

rxztt3cl

rxztt3cl1#

我很高兴地报告,我们已经成功地解决了项目中与JDBC驱动程序相关的问题。我想分享这个解决方案,以防它帮助其他面临类似问题的人。
问题:我们使用Maven来管理项目中的依赖项,并且更新了pom.xml文件中的JDBC驱动程序版本。Maven自动下载了新的JDBC驱动程序JAR文件,并将其放在/opt/tomcat/apache-tomcat-8/webapps/example/WEB-INF/lib目录中。然而,即使下载了正确的版本,我们的应用程序也没有使用更新后的JDBC驱动程序,因此我们遇到了错误。
解决方案:经过一些调查,我们发现应用程序没有像预期的那样从/opt/tomcat/apache-tomcat-8/webapps/example/WEB-INF/lib目录中获取JDBC驱动程序。相反,我们手动将JDBC驱动程序JAR文件复制到/opt/tomcat/apache-tomcat-8/lib目录,这是Tomcat的公共库目录。
通过将JDBC驱动程序放置在公共库目录中并重新启动Tomcat,该驱动程序就可以用于部署在Tomcat上的所有应用程序,包括我们的项目。这种方法解决了与版本相关的问题,我们的应用程序现在成功地使用了正确和更新的JDBC驱动程序。

相关问题