我需要在 Linux 中使用 erlang odbc 模块禁用 oracle 的自动提交。 我创建了代码连接:
{ok, Con} = odbc:connect("DSN=MyDSN", [{auto_commit, off}, {scrollable_cursors, off}]).
连接创建成功。当我尝试更新表时,请求成功,但它是自动提交的。我做错了什么?
最佳答案
好的,伙计们。我自己解决了这个问题。正如我之前在评论中所说,问题是 Linux 的 Oracle ODBC 驱动程序在连接创建之前的驱动程序初始化期间忽略了设置自动提交模式。在连接已经创建后,自动提交模式被正确设置。
我为 erlang odbc 模块创建了一个 C 源代码修复程序,现在它工作正常。你可以在这里得到我的 Erlang OTP 补丁 - https://github.com/RubberCthulhu/erlang-odbc-oracle-fix .
更新:这个消息来得太晚了,但在这里告知还是有用的。我对 Oracle ODBC 的修复已包含在 Erlang/OTP 中。因此,自 R16A 以来,问题并不实际,如果您需要将 ODBC 与 Oracle 一起使用,只需尝试最新版本的 Erlang/OTP。 R14B04-R15B02 的补丁可在此处获得 - https://github.com/RubberCthulhu/erlang-odbc-oracle-fix .
关于linux - 二郎odbc : How to disable autocommit for oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13026528/