2
這是一個使用ActiveRecord的oracle增強適配器gem連接到Oracle的ruby項目。 這顆寶石是OCI8的包裝。OCI8 - 僅在第一次嘗試時出現「連接失敗,因爲目標主機或對象不存在」
ActiveRecord::Base.establish_connection(
:adapter => "oracle_enhanced",
:database => "xxx.xxx.xxx.xxx:1521/nnnn",
:username => "some_user_name",
:password => "very_secret_password"
)
ActiveRecord::Base.pluralize_table_names = false
class All_tables < ActiveRecord::Base
end
好吧,讓我們測試一下。
[1] pry(main)> All_tables.take
OCIError: ORA-12545: Connect failed because target host or object does not exist
from oci8.c:513:in oci8lib_200.so
給它5秒鐘,然後再試一次。
[2] pry(main)> All_tables.take
#<All_tables owner: "SYS", table_name: "DUAL", tablespace_name: "SYSTEM",....
此替代方法可以完成這項工作,但感覺有點髒。
retrylimit=5
begin
All_tables.take
rescue
sleep 2
puts "retrying"
retrylimit -= 1
retry if retrylimit > 0
end
看起來像一個經典的超時,但...如果它是一個超時,在哪裏以及如何配置它? 注意:已經嘗試過:establish_connection中的timeout => 5000。沒有工作。