JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Languages on JVM » JRuby  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 [JRuby]Active_Record連上oracle9出現ORA-01722的問題
koji

秒速5センチメートル

站長

發文: 8415
積分: 19
於 2008-04-03 16:02 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
原本想從native ruby變成jruby
所以用JRuby1.1RC3, activerecord-jdbc-adapter-0.8

安裝順序就是用jruby下的gem安裝rails後安裝activerecord-jdbc-adapter
接著把oracle jdbc driver放到lib內

程式碼如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
require "rubygems"
require "active_record"
 
ActiveRecord::Base.establish_connection(
  :adapter => 'jdbc',
  :driver => 'oracle.jdbc.driver.OracleDriver',
  :url => 'jdbc:oracle:thin:@xxx:1521:xxx',
  :username => 'xxx',
  :password => 'xxx'
)
 
class UserType < ActiveRecord::Base
  set_table_name :MY_TABLE
  set_primary_key :MY_TYPE
end
 
UserType.find(:all).each {|item| puts(item[:my_type].to_s + ":" +  item[:my_name])}


然後就會一直發生error
原因寫發生在OracleDatabaseMetaData#getTypeInfo

後來google一下

發生原因就像這個連結所提
好像在其他版本oracle不會發生
但是在9會發生

http://forums.oracle.com/forums/thread.jspa?messageID=2253312

解決方式就是...想辦法把
1
2
.append(((PhysicalConnection)connection).mapDateToTimestamp ? "93" : "91").
append("as data_type, 7 as precision,\n")

改成
1
2
.append(((PhysicalConnection)connection).mapDateToTimestamp ? "93" : "91").
append(" as data_type, 7 as precision,\n")


另外不要用ojdbc14.jar
因為他有個地方判斷版本後會變成\377
1
2
"union select\n 'CHAR' as type_name, 1 as data_type, " + 
(word0 < 8100 ? '\377' : 2000) 

這會變成?然後出錯
在oracle11的driver ojdbc5.jar它變成
1
2
union select\n 'CHAR' as type_name, 1 as data_type, ").
append(word0 < 8100 ? 255 : 2000)


就不會出錯了

嗯~~唯一不滿的地方是要跑起來好花時間呀..不知道是jvm init時間太久還是jruby太久..orz..

koji


reply to postreply to post
JCConf Taiwan 2015 開始售票了!!
Facebook上的TWJUG社團,歡迎加入
» JWorld@TW »  Languages on JVM » JRuby

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8