连接到PostgreSQL时,Oracle SQLDeveloper中的自动提交始终打开

时间:2017-09-06 04:38:51

标签: oracle-sqldeveloper postgresql-9.6

我有我的Oracle SQL Developer,它连接到PostgreSQL数据库

点击此链接:Oracle SQL Developer and PostgreSQL 我设法将我的SQLDeveloper连接到PostgreSQL(仅供参考,我的SQLDeveloper版本是17.2,服务器中的postgresql是9.6)

但是,虽然我的SQLDeveloper中的自动提交设置已关闭(通过工具>首选项>数据库>高级),但我的SQLDeveloper无法提交和回滚。当我尝试手动执行提交/回滚时(即通过键入“COMMIT;”或“ROLLBACK;”),我收到了消息:

Cannot rollback when autoCommit is enabled.

据我所知,PostgreSQL总是自动提交,自动提交关闭由客户端完成。例如,我尝试了PGAdmin,并设法在没有自动提交的情况下手动提交和回滚(太糟糕了,PGAdmin有点慢)

连接到PostgreSQL时,有人可以帮我关闭SQLDeveloper的自动提交吗?

由于

1 个答案:

答案 0 :(得分:1)

可以这样做,但必须修改pgjdbc驱动程序(自动提交,不能使用url属性修改)

我已经使用版本42.0.0完成了(如果需要,可以通过电子邮件发送jar):

https://github.com/pgjdbc/pgjdbc 下载源代码

修改代码,如下所述:

<强> PGProperty.java

DEFAULT_ROW_FETCH_SIZE(“defaultRowFetchSize”,“50”,//为“0”

AUTOSAVE(“autosave”,“always”,//“从不”

<强> PgConnection.java   private boolean autoCommit = false; //是真的

重建jar文件。

此修改后的驱动程序在语法窗口中支持 commit; rollback; ,即使提交和回滚按钮仍处于灰色状态。

也许有人会找到一种方法来更改Sql开发人员代码以启用这些按钮; o)

注意:

  • 修改了defaultrowfetchsize以防止sql开发人员在内存中加载大表。

  • 自动保存已被修改以防止ERROR:当前事务被中止,命令被忽略直到事务块结束。