我正面临耙子的问题。当我提供 rake 时,rake 失败并出现以下错误:
/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 但是,我在 ruby 的 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 端的密码过期行为。我需要一个红宝石级别的解决方法。