我有我的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的自动提交吗?
由于
答案 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:当前事务被中止,命令被忽略直到事务块结束。