rails的局部更新特性与oracle中clob数据类型问题解决

阅读更多
最近在项目中遇到了这样一个问题。当数据表存在“clob”类型的数据项时rails框架局部更新数据时(注:更新时没有修改任何数据)。

系统就会出现以下提示:ORA-22920: row containing the LOB value is not locked

     以前从来没有遇到过这样的问题。。经过一番折腾总算是找到解决的方法了。。

  方法一:可以在environment.rb文件中增加下面这句:

ActiveRecord::Base.partial_updates = false

解析:

     将rails2.1框架的局部更新特性完全关闭,也就是无论你是否有修改,都会去重新写一遍数据库。。在这个文件中增加这一列,是对项目中所有的模块都设置了。这样对一些不存在clob弄数据的地方不太合适。也会影响到性能(一个项目中clob型的数据必竞是少之又少的,这样做得不尝失)。

方法二:在相应的功能的model文件中增加以下代码:

class 功能模块 < ActiveRecord::Base

.....
   self.partial_updates = false

......

end

这样就可以必免方法一中的问题。

你可能感兴趣的:(rails,oracle)