【问题标题】:Autocommit Always Turns On in Oracle SQLDeveloper when Connecting to PostgreSQL连接到 PostgreSQL 时,Oracle SQLDeveloper 中的自动提交始终打开
【发布时间】:2018-02-14 10:51:46
【问题描述】:

我有我的 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 的自动提交?

谢谢

【问题讨论】:

    标签: oracle-sqldeveloper postgresql-9.6


    【解决方案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 私有布尔自动提交 = 假; // 是真的

    重建 jar 文件。

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

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

    注意:

    • defaultrowfetchsize 已被修改,以防止 sql developer 在内存中加载大表。

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

    【讨论】:

      猜你喜欢
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 2019-04-23
      • 2014-11-27
      • 2014-04-06
      • 1970-01-01
      相关资源
      最近更新 更多