我需要在
Linux中使用erlang odbc模块禁用oracle的autocommit.
我创建了与代码的连接:
我创建了与代码的连接:
{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.