0
我正面臨着耙子的問題。當我給耙,耙失敗,出現以下錯誤:Ruby的OCI_SUCCESS_WITH_INFO錯誤
/Ruby/lib/ruby/site_ruby/1.8/oci8.rb:228 - ORA-28002: the password will expire within 5 days
這裏的問題是,OCILogon會給地位OCI_SUCCESS_WITH_INFO我相信在evn.c
所以沒有被處理,當我挖出來到代碼中,我發現,evn.c的確有隻爲OCI_SUCCESS 檢查,但那時,我在紅寶石env.c改變了代碼像這樣在功能oci8_logon存在:
rv = OCILogon(envh->hp, envh->errhp, &svchp,
u.ptr, u.len, p.ptr, p.len, d.ptr, d.len);
if (rv != OCI_SUCCESS && rv != OCI_SUCCESS_WITH_INFO) {
oci8_raise(envh->errhp, rv, NULL);
}
不過我我面臨同樣的問題。 我驗證了它返回的值(rv)它是來自oci.h的1,我確認是OCI_SUCCESS_WITH_INFO
任何想法接下來我需要做什麼?
PS:我不想通過更改帳戶關聯的配置文件來更改oracle側的密碼過期行爲。我需要一個ruby級別的解決方法。
感謝鮑勃。但是,如果您在帖子中看到更新,我提到即使沒有進行oci8_raise調用,我也會得到無效的句柄錯誤。看起來像登錄時返回一個OCI_SUCCESS_WITH_INFO,隨後的句柄操作變得無效。我不確定這一點。但是有沒有解決方法? – Ricketyship
我建議如果返回值是OCI_SUCCESS_WITH_INFO,則應重複調用OCIErrorGet,直到返回OCI_NO_DATA以清除任何未完成的錯誤/警告。出於測試目的,這些警告和/或錯誤應顯示在某處或轉儲到文件,以便您可以看到警告/錯誤可能是什麼。 (我同意在OCI_SUCCESS_WITH_INFO之後應該沒有錯誤)。我不明白爲什麼這可能會影響一些事情,但這是一件值得嘗試的事情。 –
我沒有嘗試重複調用OCIErrorGet。無論如何值得一試。我打了一次OCIErrorGet,並得到「密碼將在7天內過期」的消息。 – Ricketyship